Pyhton模拟财富分配游戏,结果有点意外!
共 904字,需浏览 2分钟
·
2020-09-28 20:06
来源 | 一行数据
有一个问题不知道有没有缠绕你很久,就是“为什么我们这么穷?”。原因是我们不够努力,还是我们的爹不够努力,是运气不好,还是时代的问题。行哥今天就用Python来从另一个角度深入分析一下这个问题
首先我们从一个游戏来入手:
房间内有100个人,每个人有100元,每过1分钟每个人都要随机给一个人1块钱(可以是别人也可以是自己,保持随机性),过一段时间后房间内资金分配会怎么样?
从直觉来看,这道题只有两种答案,一种是玩家的财产都差不多,另一种玩家的财产差异越来越大。分析之前不妨先投票做个调查,你支持哪种结果?
no bb show your gif
设置一个列表有100个元素代替100个玩家的财产,初始数据皆为100,每次分钱对每个元素都减去1,并循环100次给1个随机元素增加1。结果的动图如 上,我们看到分了250次钱,结果好像是财富差距越来越大???
完整代码在这,你看看有没有错:
# 每人100元,然后每人进行分钱
import random
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
p = [100] * 100 # 设置个列表,每人有多少钱
ax = plt.subplot(1, 1, 1)
coin = 1
for d in range(1,1001): # 设置分钱次数
color = []
for i in range(100): # 每次分钱每人先扣一块钱
p[i] -= coin
for i in range(100): # 再将这100块钱随机分配到其他人身上
p[random.randint(0, 99)] += coin
for i in p:
if i <= 0:
color.append("red")
else:
color.append("blue")
ax.cla() # 清楚画面
ax.bar(range(100), p , width=0.9, color = color,alpha=0.5) # 画柱状图
plt.title("第%d次分钱" % d) # 设置标题
plt.ylabel("身价")
plt.pause(0.01) # 设置暂停
plt.show()
行哥的个人理解是,在资源总和固定和分配概率固定的情况下,如果刚开始第一个人获得1块钱,第二个人失去1块钱,他们的差距是两块钱,第二个人财产想超过第一个人的概率呈指数递减,并且当分配的次数越多,二者的差距越大,反超概率越低
横向图来看
或者我们用折线图来展示,为了快速看出结果,修改分配的金钱基数为10块钱(即每次减去10块钱和每次随机获得10块钱)。我们可以从动图看到确实一开始有钱的越有钱,穷的越来越穷,虽然中间有所波折,但是也像极了我们的人生,大起大落落落落落落....
下图是第539次分配(分配金钱基数为1块钱),可以看到黄色和蓝色玩家从一开始的落后始终也没能翻身,紫色玩家即使大幅度家道中落也处在玩家的中间位置
破产能不能逆袭?
这里提高资金分配的基数为10,并对曾破产的玩家修改颜色为红色。从动图可以看出,曾经破产的玩家再逆袭是可以的,但是逆袭的玩家从数量和财富值来说都是不如一开始领先的玩家
出生不同
如果更贴近一下真实的世界,每个人出生的财产是不一样的。即使进行1000次财产分配,出生财产处于下层的依旧处于下层,出生财产处于上层依旧处于上层。不乏也有红色这样的上进派,希望通过自己的努力进入上层阶级,这需要时间,也需要运气。
政府补贴
当然政府是会保证人民的基本生活条件,所以我们设置参数当一个玩家再财富为0时,政府会主动给他补贴10。我们从下图可以看到紫色玩家展示了真正的落地反弹
生产力的发展
从时代的角度来看,资源的总和随着生产力的发展是不断膨胀的。这里我们设置每次分配的时候,每个玩家都减去1块钱但是能够获得3块钱,最后的结果如下图可以看到,所有玩家的财富都在增长。所以当我们把眼光放的长远,我们比过去的人们富有太多,可以想想现在的手机放在100年前要值多少钱?
End
游戏分析到这我们可以看出,我们穷的原因真的是因为我们爹穷。就像法拉利一样,99%的人出生时候买不起,1%的人这辈子就买不起了。当然除此以外还有其他因素,但是出生时所处的社会阶层占据了很大的原因
不过从游戏里也能看出,脱离贫穷的唯一办法就是抓住每次机会来减少差距,例如08年的比特币,10年的房子,12年的公众号,时代的快车只要你能赶上一趟,就不会再有开篇这个问题了。