您的位置:首页 > 编程语言 > Python开发

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

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

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

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

# 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,是我们的直觉。但是别忘了,这是一个分布,有方差的,所以,其实每个人都是在这个分布里面抽样。所以才会有这样类似于反直觉的结果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐