前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >“房间里有100个人,每人都有100元钱,每轮每人要拿一元钱随机给另一个人”最后分布的python结果

“房间里有100个人,每人都有100元钱,每轮每人要拿一元钱随机给另一个人”最后分布的python结果

作者头像
钱塘小甲子
发布2019-01-28 10:27:39
1.9K0
发布2019-01-28 10:27:39
举报

下午看到了这个问题,一开始直觉当然是觉得每个人的期望都是一样的,大家都是公平的,最后肯定是差不多。

这就是直觉,而在统计学和随机过程的世界里,直觉往往是错误的。

我们用python仿真一下这个过程。

代码语言:javascript
复制
# coding:utf-8
# 房间里有100个人,每人都有100元钱,他们在玩一个游戏。
# 每轮游戏中,每个人都要拿出一元钱随机给另一个人,最后这100个人的财富分布是怎样的?
import matplotlib.pyplot as plt
import pandas as pd
import random
person = 100
id_list = range(person)
id_money_dict = {k: person for k in id_list}
round_number = 17000
for round in range(round_number):
    for id in id_money_dict.keys():
        id_money_dict[id] += -1
        id_get = random.randint(0, person-1)
        while id_get == id:
            id_get = random.randint(0, person - 1)
        id_money_dict[id_get] += 1
se = pd.Series(id_money_dict)
se.plot.bar()
plt.show()
plt.close()
plt.show()
plt.close()
se.plot.hist(bins=100)
plt.show()

结果的图如下:

第一张图是每个人最后手上的钱,后面一个是财富的分布。

确实反直觉。

但是仔细一想,确实这件事情是这样的。我们假设现在进行了1000次试验,那么每个人的期望收益就是100 - 1000 + (1000* 1/99 * 99) = 100.这个期望是100,是我们的直觉。但是别忘了,这是一个分布,有方差的,所以,其实每个人都是在这个分布里面抽样。所以才会有这样类似于反直觉的结果。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年07月30日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档