乌托邦式财富分配-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的样子。

 

posted @ 2021-05-23 22:56  起一个  阅读(216)  评论(0)    收藏  举报