快捷搜索: 王者荣耀 脱发

Python模拟财富分配实验

简介

在知乎上看到了一个模拟财富分配的实验,通过Python进行模拟实验,尽管与知乎上面的结论不太一致,但还是写出来,毕竟是实验的真实数据。

规则

在一个封闭的房间里,有一百人,每个人有100元,每个人拿出一元钱,随机给另一位人(包括自己),所有人获得这个一块钱的概率相等,反复进行实验,最后这一百个人的财富分布到底会是怎样的?

代码模拟

环境

Python 3.5 matplotlib 库 windows10 CMD运行

初始化

给100人每人100元,用Python的字典数据结构来表示,编号0-99,作为key,初始每个人的value为100.

people={}
#初始财富分配,每人100元
for i in range(0,100):
    people[i]=100

一次完整分配

接下来写一个财富分配函数,进行每次的随机资金流动,对每个人都进行一次财富值减一操作,并且随机分配给其他人(包括自己,如果把自己的财富重新分配给自己,虽然自身财富值没有增长,但是可能会拉动GDP,生活中不赔不赚的事情也很常见) 我们暂且先设定,当一个人财富值为0时候,不再进行财富支出,但是不影响他获得其他人财富的概率

def assign():   
    for key in people.keys():
        #如果财富值为0,不再流出,但是同样可以和其他人有同样的机会获取财富
        if people[key]<=0 :
            continue
        #在0-99编号中随机选取一位
        n=random.randint(0,99)
        #每人从自己财富中-1
        people[key]=people[key]-1
        #每个人自己财富+1的机会相等
        people[n]=people[n]+1
        #print(key,":",people[key])

理想状态进行模拟

一个人,假设从20岁开始算起,到65岁退休,这段时间内,每天进行一次上述过程,那么就是365*(65-20)次。

for i in range(365*(65-20)):
    #从20岁开始到65岁退休,每天进行一次资金流动
    assign()

统计结果

简要统计一下,比初始值低的人数和高于初始值的人数,最终的最低值哈最大值,以及100人财富的总体分布情况。

#高于,等于,低于初始值人数
a,b,c=0,0,0
#高于,等于,低于初始值人财富值总和
avalue,bvalue,cvalue=0,0,0
for value in people.values():
    if value>100:
        a=a+1
        avalue=avalue+value
    elif value==100:
        b=b+1
        bvalue=bvalue+value
    elif value<100 :
        c=c+1
        cvalue=cvalue+value

print("高于初值人数:", a,"
保持不变人数:", b, "
低于初值人数:",c )
print("
高于初值人财富总值",avalue,"
等于初值财人富总值",bvalue,"
低于初值人财富总值",cvalue)


number=list(people.keys())
wealth=list(people.values())
#wealth.sort()
print("
个人最高:",max(wealth),"个人最低:",min(wealth))

使用matplotlib进行画图显示

plt.fill_between(number,wealth,0,color=green)
plt.xlabel(player)
plt.ylabel(wealth)
plt.show()

实验结果

CMD窗口输出结果 百人财富分布图 对财富值进行排序后如下

附加

上面模拟实验,假设当财富值为0是,不再进行支出,如果修改为,可以进行支出(通过借贷继续进行,总资产为负),并且其他概率和其他人一样的情况下,在进行模拟实验,注释如下代码

#如果财富值为0,不再流出,但是同样可以和其他人有同样的机会获取财富
        #if people[key]<=0 :
            #continue

得到实验结果为

总结

在看似最公平的情况下,大家的财富值也不会在一个平均水平,反而差距比较大,在允许透支消费情况下,贫富差距更大,两极分化严重,多次模拟资金流动后,仍然能够停留在当初财富初始值的人几乎没有,逆水行舟,不进则退,与君共勉。

经验分享 程序员 微信小程序 职场和发展