"""
优先连接模型:
一连串物体(人)一个接一个地到达。第一个到达者创建一个实体。后续每次有人到达时都应用以下规则:
在概率p(较小)的情况下,新到达者创造一个新的实体;在概率(1-p)的情况下,新到达者加入现有的某个实体(产生链接)。
加入某个特定实体的概率等于该实体的大小除以到目前为止所有到达者的数量。
"""
import random
import matplotlib.pyplot as plt
# 初始化变量
network = {0:[1]}
nodes = 1000
p = 0.1
num = 1
for i in range(1, nodes):
network[i] = []
x = random.random()
accu_prob = 0.0
num += 1
# 概率小于初始概率则新建实体
if x <= p:
network[i] = [1]
else:
# 反之则遍历value计算各实体概率
for key,value in network.items():
accu_prob += len(value) / num
if x <= accu_prob:
network[key].append(1)
break
node_list = [len(value) for value in network.values()]
plt.hist(node_list, 50)
plt.show()
![]()