通过 python 生成具有幂律度分布的无标度网络

generate scale free network with power-law degree distribution by python

我写这段代码来生成具有幂律度分布的无标度网络。

import networkx as nx
import random
N = 1000
exponent = 2.2
test = [int(random.paretovariate(exponent-1)) for i in range(N)]
graph = nx.configuration_model(test)
print("number of self-loops : ",  graph.number_of_selfloops())

但我遇到了这个错误:

AttributeError: 'MultiGraph' object has no attribute 'number_of_selfloops'

我不明白这是什么问题,我该如何解决。 还有其他方法可以用 networkX 生成这样的网络吗? (不想去掉自循环和多链接)

正如 configuration_model 的文档中所述,此函数 returns 一个 MultiGraph,它没有方法 number_of_selfloops,但您仍然可以使用 nx.number_of_selfloops 方法,它也适用于 MultiGraph(NetworkX 改变了他们希望调用此类方法的方式)或简单地使用 non_multi_graph = nx.Graph(graph).

创建一个普通图形