房间里有100个人,每人都有100元钱,他们在玩一个游戏。每轮游戏中,每个人都要拿出一元钱随机给另一个人,最后这100个人的财富分布是怎样的?
使用for循环对字典的键遍历,并改变键对应的值,然后通过生成随机整数的函数对钱进行随机分配。之后将坐标对应的钱数按从小到大的顺序排列放入纵坐标列表中。之后运用所写的画图函数对游戏结果画图。下图为(1)的模拟结果:
可以看出,财富的分配接近于幂律分布(结论只是程序模拟,而非数学精确求解)。最后,社会将有很少的富人和很多的穷人。就这样,大部分人的钱跑进了少部分人的口袋里。即使在公平的规则下,财富的分配仍然不公平。
程序代码如下:
init_gold, person, minutes = 100, 100, 17000
golds = [init_gold] * person
persons = [person] * person
for m in range(minutes):
for p in range(person):
if golds[p] > 0:
golds[p] -= 1
choice_person = random.randint(0, person - 1)
golds[choice_person] += 1
id = range(0, 100)
golds.sort()
plt.xlabel('ID')
plt.ylabel('Fortune')
plt.bar(id, golds, color='b')
plt.show()