![見出し画像](https://assets.st-note.com/production/uploads/images/86935605/rectangle_large_type_2_64171494a0ee8ddef4a4e495c384d7c7.png?width=800)
サイコロの確率【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()
表にするとこうなります。
![](https://assets.st-note.com/img/1663219451968-MlLEU2KNsW.png)
![](https://assets.st-note.com/img/1663219622869-91SEIkVq0U.png)
![](https://assets.st-note.com/img/1663219703403-MLfxEpKZN7.png)
毎回バラつきが見られます。
今度は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()
![](https://assets.st-note.com/img/1663224746926-Vg2TlBaGMr.png)
![](https://assets.st-note.com/img/1663224779159-KoITeqeDoa.png)
![](https://assets.st-note.com/img/1663224799187-bi1cAtaL2a.png)
少しバラツキがなくなってきました。平らに近づいてますね。
次は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()
![](https://assets.st-note.com/img/1663225261273-LstJrb170i.png)
![](https://assets.st-note.com/img/1663225279905-M6afy0LoR4.png)
![](https://assets.st-note.com/img/1663225290359-mNk1lFcv5k.png)
1000回の時よりも、平らになっていきました。
次は1万回投げてみます。
![](https://assets.st-note.com/img/1663230187599-aOkJ1l7wi4.png)
更に平らになる事は予想できますね。
バラツキがなく、1500から1700までの間で収束しました。
これ程の回数を行えば1/6 の16.6%というのがよく分かりますね。
この記事が気に入ったらサポートをしてみませんか?