サイコロの目が出る確率は6分の1とは限らない
フツーに考えるとサイコロの目が出る確率って、それぞれ6分の1ですよね。でも6回振っても「1の目が1回も出ない」なんてことはザラにあります。
確率ってなんだったんだよって思っちゃいますね。で、最近読んだ本にそのあたりのことが詳しく書いてありました。
要するに「サイコロを投げる回数が大きくなればなるほど、1の目の出る確率は6分の1に近くなる」そうです。ホントにそうなのか試したくなってきました。
でも、さすがにサイコロを10万回とか投げたくないので、プログラミング言語Pythonで実行してみます。
標準モジュールのrandomを利用して、下記のような感じでサッと書いてみました。timesという変数にサイコロを投げる回数を入れています。下の例ですと10回サイコロを投げる感じです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import time import random start = time.time() times = 10 result_dict = {1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0} for i in range(0, times): result = random.randint(1,6) result_dict[result] = result_dict[result] + 1 for i in range(1, 7): print(str(i) + "が出た回数" + str(result_dict[i]) + "回( " + str(result_dict[i] / times) + " )") elapsed_time = time.time() - start print("実行時間:{0}".format(elapsed_time) + "[sec]") |
回数を増やしつつ実行してみましょう。それぞれ5回ずつ実行してみました。
サイコロを10回投げた時の確率
10回投げるだけだと、バラつきがかなりありますね。1回も出ない目があったりします。出た回数の右のカッコ内の小数点の数値は、その目が出た割合を表しています。ちなみに6分の1は0.166…なので、0.5とかかなり遠いものがありますね。
サイコロを1000回投げた時の確率
1000回サイコロを投げてみると、すべての割合が0.2未満に収まりました。だいぶんバラツキが無くなってきたようです。
サイコロを10万回投げた時の確率
そしていよいよ10万回投げます。するとすべて0.16…に収まっているではありませんか!ほぼ6分の1と言ってよいと思います。
まとめ
こんな感じで、サイコロを投げる回数を大きくすればするほど、目の出る確率は6分の1に近づくことが体感できました。
ちなみに投げる回数を無限大にすると、それぞれの目の出る確率はピッタリ6分の1になるそうです。このあたりになると数学の話なのにファンタジーみたいになってきます。
ま、厳密な話をするとPythonが用意しているrandomモジュールがどれくらい正しくランダムしてくれてるのか、なんてことも問題になってきそうですが、目的は達成できたのでよしとします。
疑問に思ったことをプログラムでパパッとテストできるって、すごく便利ですね。世の中、ますます便利になっていくに違いないし、未来が楽しみです^^
コメント