使用 gnp_random_graph 创建多个图表
Creating multiple graphs using gnp_random_graph
在使用 NetworkX
包时,我的任务是创建具有给定 n 个节点数和 p 概率的多个随机图,这是我的代码:
def random_networks_generator(n,p,num_networks=1, directed=False,seed=30030390):
Graph_list=[]
for num in range (0,num_networks):
G=nx.gnp_random_graph(n,p,seed,directed)
Graph_list.append(G)
return Graph_list
但是,每次迭代都会创建完全相同的图(甚至连边都完全相同)
有人知道哪里出了问题吗?
更新:
在尝试使用不带“种子”参数的函数后,图形是随机的,但是有没有办法在仍然使用“种子”参数的同时对问题进行排序?
目前您在循环中使用相同的固定种子进行所有调用。根据 gnp_random_graph
or more general Randomness 的文档,通过修复种子,您可以确保始终收到完全相同的随机图。
例如:
G_1=nx.gnp_random_graph(100, .5, 42)
G_2=nx.gnp_random_graph(100, .5, 42)
G_3=nx.gnp_random_graph(100, .5, 43)
图 G_1
和 G_2
将具有完全相同的边,而 G_3
得到不同的种子并且很有可能不同(如本例所示)。
您可以通过以下代码获得检索相同图表列表(由初始种子确定)的期望行为:
def random_networks_generator(n, p, num_networks=1, directed=False, seed=30030390):
Graph_list=[]
for num in range (0,num_networks):
G=nx.gnp_random_graph(n, p, seed + num, directed)
Graph_list.append(G)
return Graph_list
关于种子的更多背景:
- What is the use of numpy.random.seed() Does it make any difference?
- random.seed(): What does it do?
在使用 NetworkX
包时,我的任务是创建具有给定 n 个节点数和 p 概率的多个随机图,这是我的代码:
def random_networks_generator(n,p,num_networks=1, directed=False,seed=30030390):
Graph_list=[]
for num in range (0,num_networks):
G=nx.gnp_random_graph(n,p,seed,directed)
Graph_list.append(G)
return Graph_list
但是,每次迭代都会创建完全相同的图(甚至连边都完全相同)
有人知道哪里出了问题吗?
更新:
在尝试使用不带“种子”参数的函数后,图形是随机的,但是有没有办法在仍然使用“种子”参数的同时对问题进行排序?
目前您在循环中使用相同的固定种子进行所有调用。根据 gnp_random_graph
or more general Randomness 的文档,通过修复种子,您可以确保始终收到完全相同的随机图。
例如:
G_1=nx.gnp_random_graph(100, .5, 42)
G_2=nx.gnp_random_graph(100, .5, 42)
G_3=nx.gnp_random_graph(100, .5, 43)
图 G_1
和 G_2
将具有完全相同的边,而 G_3
得到不同的种子并且很有可能不同(如本例所示)。
您可以通过以下代码获得检索相同图表列表(由初始种子确定)的期望行为:
def random_networks_generator(n, p, num_networks=1, directed=False, seed=30030390):
Graph_list=[]
for num in range (0,num_networks):
G=nx.gnp_random_graph(n, p, seed + num, directed)
Graph_list.append(G)
return Graph_list
关于种子的更多背景:
- What is the use of numpy.random.seed() Does it make any difference?
- random.seed(): What does it do?