確率における大数の弱法則をPythonで体感してみた

サイコロを振る

サイコロの目が出る確率は6分の1とは限らない

サイコロを振る

フツーに考えるとサイコロの目が出る確率って、それぞれ6分の1ですよね。でも6回振っても「1の目が1回も出ない」なんてことはザラにあります。

 

確率ってなんだったんだよって思っちゃいますね。で、最近読んだ本にそのあたりのことが詳しく書いてありました。

 

要するに「サイコロを投げる回数が大きくなればなるほど、1の目の出る確率は6分の1に近くなる」そうです。ホントにそうなのか試したくなってきました。

 

でも、さすがにサイコロを10万回とか投げたくないので、プログラミング言語Pythonで実行してみます。

 

標準モジュールのrandomを利用して、下記のような感じでサッと書いてみました。timesという変数にサイコロを投げる回数を入れています。下の例ですと10回サイコロを投げる感じです。

 

 



 

回数を増やしつつ実行してみましょう。それぞれ5回ずつ実行してみました。

 

 

 

サイコロを10回投げた時の確率

サイコロを10回投げた時の確率

 

10回投げるだけだと、バラつきがかなりありますね。1回も出ない目があったりします。出た回数の右のカッコ内の小数点の数値は、その目が出た割合を表しています。ちなみに6分の1は0.166…なので、0.5とかかなり遠いものがありますね。

 

 

 

サイコロを1000回投げた時の確率

サイコロを1000回投げた時の確率

 

1000回サイコロを投げてみると、すべての割合が0.2未満に収まりました。だいぶんバラツキが無くなってきたようです。

 

 

 

サイコロを10万回投げた時の確率

サイコロを100000回投げた時の確率

 

そしていよいよ10万回投げます。するとすべて0.16…に収まっているではありませんか!ほぼ6分の1と言ってよいと思います。

 

 

 

まとめ

こんな感じで、サイコロを投げる回数を大きくすればするほど、目の出る確率は6分の1に近づくことが体感できました。

 

ちなみに投げる回数を無限大にすると、それぞれの目の出る確率はピッタリ6分の1になるそうです。このあたりになると数学の話なのにファンタジーみたいになってきます。

 

ま、厳密な話をするとPythonが用意しているrandomモジュールがどれくらい正しくランダムしてくれてるのか、なんてことも問題になってきそうですが、目的は達成できたのでよしとします。

 

疑問に思ったことをプログラムでパパッとテストできるって、すごく便利ですね。世の中、ますます便利になっていくに違いないし、未来が楽しみです^^

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください