見出し画像

サイコロの確率【python】

サイコロの確率は何%か知っていますか?
各面がでる確率は同じとたら、単純に1/6 で16.6%となります。

では2回連続同じ目が出る確率は、どのくらいでしょう?
計算の仕方は1/6かける1/6で、1/36です。
1÷36=0.027777…
2.7%

3回連続だと更に1/6 をかけて、1/216。
1÷216=0.00462
0.4%
とても低いですね。

今度はサイコロを10回投げてみましょう、どんな結果になると思いますか?各面がでる確率は同じとします。
これをpythonで計算します。

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

dice = pd.Series([1, 2, 3, 4, 5, 6])
times= 10
samp = dice.sample(times, replace=True)
samp.hist(bins=6, range=(1, 7))

plt.yticks(np.arange(0, times, 1))
plt.show()

表にするとこうなります。

1回目
2回目
3回目


毎回バラつきが見られます。
今度は100回投げた結果を見ましょう。

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

dice = pd.Series([1, 2, 3, 4, 5, 6])
times= 100
samp = dice.sample(times, replace=True)
samp.hist(bins=6, range=(1, 7))

plt.yticks(np.arange(0, 50, 5))
plt.show()
1回目
2回目
3回目

少しバラツキがなくなってきました。平らに近づいてますね。
次は1000回投げてみます。

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

dice = pd.Series([1, 2, 3, 4, 5, 6])
times= 1000
samp = dice.sample(times, replace=True)
samp.hist(bins=6, range=(1, 7))

plt.yticks(np.arange(0, 500, 50))
plt.show()
1回目
2回目
3回目

1000回の時よりも、平らになっていきました。



次は1万回投げてみます。

10000回投げた時

更に平らになる事は予想できますね。
バラツキがなく、1500から1700までの間で収束しました。
これ程の回数を行えば1/6 の16.6%というのがよく分かりますね。


この記事が気に入ったらサポートをしてみませんか?