おいも貴婦人ブログ

生物系博士課程満期退学をしたAIエンジニアのブログ。

大沢統計第1章(1)

生物物理学分野の大御所、大沢文夫先生が執筆された『大沢流手づくり統計力学』の第1章の内容をプログラミングしてみました。

大沢流 手づくり統計力学

大沢流 手づくり統計力学

内容

正規分布(完全にランダム)に従い与えられた、お金がやり取りを介して、指数分布になる。

プログラミング内容

最初にnum_person人にmoney=10000を分配します。その後、ランダムに選ばれた人が、またランダムに選ばれた人にmoney=1を渡す。交換の操作を100000回繰り返す。

#! /usr/bin/env python
import numpy as np
import matplotlib.pyplot as plt

### initial set
fig=plt.figure()
np.random.seed(0)
money=10000
num_person=1000
ave=money/num_person
num_exchange=1000000
persons=np.zeros(num_person)

for i in range(money):
    persons[np.random.randint(0,num_person)]+=1

### for fig1
ax1=fig.add_subplot(211)
ax1.set_xlim([0,ave*2])
ax1.set_ylim([0,num_person/4])
ax1.hist(persons,ave*2,range=(0,ave*2))

### exhange money
for i in range(num_exchange):
    out=np.random.randint(0,num_person)
    if persons[out]==0:
        continue
    persons[out]-=1
    persons[np.random.randint(0,num_person)]+=1

### for fig2
ax2=fig.add_subplot(212)
ax2.set_xlim([0,ave*2])
ax2.set_ylim([0,num_person/4])
ax2.hist(persons,ave*2,range=(0,ave*2))

plt.savefig("ch1.png")
plt.show()

結果、上の図が交換する前で下の図が交換後の図になります。もうちょっと交換回数が必要な模様...。横軸が持っているお金で、縦軸が人数です。
f:id:oimokihujin:20140614121442p:plain