non_randomness(G, k=None, weight='weight')[source]#

Compute the non-randomness of graph G.

The first returned value nr is the sum of non-randomness values of all edges within the graph (where the non-randomness of an edge tends to be small when the two nodes linked by that edge are from two different communities).

The second computed value nr_rd is a relative measure that indicates to what extent graph G is different from random graphs in terms of probability. When it is close to 0, the graph tends to be more likely generated by an Erdos Renyi model.

GNetworkX graph

Graph must be symmetric, connected, and without self-loops.


The number of communities in G. If k is not set, the function will use a default community detection algorithm to set it.

weightstring or None, optional (default=None)

The name of an edge attribute that holds the numerical value used as a weight. If None, then each edge has weight 1, i.e., the graph is binary.

non-randomness(float, float) tuple

Non-randomness, Relative non-randomness w.r.t. Erdos Renyi random graphs.


if the input graph is not connected.


if the input graph contains self-loops.


This computes Eq. (4.4) and (4.5) in Ref. [1].

If a weight field is passed, this algorithm will use the eigenvalues of the weighted adjacency matrix to compute Eq. (4.4) and (4.5).



Xiaowei Ying and Xintao Wu, On Randomness Measures for Social Networks, SIAM International Conference on Data Mining. 2009


>>> G = nx.karate_club_graph()
>>> nr, nr_rd = nx.non_randomness(G, 2)
>>> nr, nr_rd = nx.non_randomness(G, 2, 'weight')