天天看點

“房間裡有100個人,每人都有100元錢,每輪每人要拿一進制錢随機給另一個人”最後分布的python結果

下午看到了這個問題,一開始直覺當然是覺得每個人的期望都是一樣的,大家都是公平的,最後肯定是差不多。

這就是直覺,而在統計學和随機過程的世界裡,直覺往往是錯誤的。

我們用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()           

複制

結果的圖如下:

“房間裡有100個人,每人都有100元錢,每輪每人要拿一進制錢随機給另一個人”最後分布的python結果
“房間裡有100個人,每人都有100元錢,每輪每人要拿一進制錢随機給另一個人”最後分布的python結果

第一張圖是每個人最後手上的錢,後面一個是财富的分布。

确實反直覺。

但是仔細一想,确實這件事情是這樣的。我們假設現在進行了1000次試驗,那麼每個人的期望收益就是100 - 1000 + (1000* 1/99 * 99) = 100.這個期望是100,是我們的直覺。但是别忘了,這是一個分布,有方差的,是以,其實每個人都是在這個分布裡面抽樣。是以才會有這樣類似于反直覺的結果。