财富分配模拟

       房间里有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()

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值