为何执行相同命令生成的图与讲师的图形状存在差异?
为什么你和讲师的
nx.gnp_random_graph生成图不一样? 嗨,这个问题其实很常见——核心原因就是nx.gnp_random_graph(n, p)本身就是随机图生成器,每次运行的结果本来就存在差异,具体来说有这几个关键点:
- 随机边的本质:这个函数的工作逻辑是,对20个节点的所有可能边(总共190条),每条边都以50%的概率被随机选中保留。每次运行程序时,随机选择的边组合都是不同的,自然图的连接结构和最终呈现的形状就不一样了。
- 讲师用了随机种子:如果讲师的图每次运行都固定,那他大概率是设置了随机种子。随机种子可以让随机数生成器的输出固定下来,这样每次生成的图结构就完全一致。你只需要在生成图之前加上一行种子设置代码,就能复现他的结果:
import networkx as nx import matplotlib.pyplot as plt # 设置随机种子,让图生成过程固定 nx.random.seed(42) # 42只是示例,讲师可能用了其他数字 G = nx.gnp_random_graph(20, 0.5) plt.show(G) - 绘图布局的随机性:有时候就算图结构一样,你和讲师的图看起来还是不同,这可能是因为默认的绘图布局(比如
spring_layout)也是随机计算节点位置的。如果要连节点位置都完全一致,你可以给布局函数也加上种子:pos = nx.spring_layout(G, seed=42) # 固定节点布局 nx.draw(G, pos=pos) plt.show()
只要设置了相同的随机种子,你生成的图就会和讲师的完全一模一样啦!
内容的提问来源于stack exchange,提问作者Rajat Negi
相关产品推荐
相关产品推荐

