乌托邦式财富分配-python简单实现
在B站看视频看到介绍乌托邦式财富分配的问题,一时兴起使用python简单实现一下。
1 # 200个人每个人初始资产都是100元 2 # 每次每个人随机拿出1元给另外199人的一个 3 # 每个人获得1元的概率是相同的,重复多次 4 import random 5 import matplotlib.pyplot as plt 6 7 # 这两行代码解决 plt 中文显示的问题 8 plt.rcParams['font.sans-serif'] = ['SimHei'] 9 plt.rcParams['axes.unicode_minus'] = False 10 11 a = 100 #初始资产 12 b = 200 #游戏人数 13 c = [a for i in range(b)] #为b个人赋值初始资产a 14 num = 20000 #重复次数 15 16 for i in range(num): 17 for j in range(b): 18 rand = random.randint(0,b-1) 19 c[j] -= 1 #自己-1 20 c[rand] +=1 #随机一人+1 21 c.sort() 22 23 plt.bar([i for i in range(b)], c) 24 plt.title('男性购买饮用水情况的调查结果') 25 plt.show() 26 # d = 0 27 # e = 0 28 # for i in range(b-20): 29 # d += c[i] 30 # for i in range(b-20,b): #10%的人拥有的财富 31 # e += c[i] 32 # print(d, e)
多次运行结果跟图片类似,经过20000次迭代比初始资产增加和减少的人大概各占一半。

另外去掉注释运行后,10%的人拥有的财富也没有达到视频中介绍的那样总资产的50%,大概1/3的样子。


浙公网安备 33010602011771号