サイコロ3個ふって2個同じ目になる確率は? pythonでサイコロ・シュミレーターを作って、計算結果が正しいか確認してみる。
反復試行の確率の公式
nCr×p^r×(1-p)^n-r
を使って、とりあえず1のゾロ目が出る確率を算出
n=3回振って、r=2個が1の出目。
p = 1/6(出目1の確率)だから
nCr = 3C2 = 3*2*1/2*1 = 3通りのパターンがある(1-1-n, 1-n-1, n-1-1)
p^r = (1/6)^2 = 1/36の確率で、2個が1の出目
(1-p)^n-r = (5/6)^1 = 5/6の確率で、残り1個が1以外の出目
3C2×(1/6)^2×(1-1/6)^1 = 15/216の確率で、1ゾロ目が出る。
同じ出目は1~6まであるので、単純に6倍。さらに3つとも同じ出目の確率も足す
((15*6) + 6)/216 = 96/216 = 0.4444(44.44%)
意外と高い?結構な割合で出そう
計算結果が正しいのか、pythonでサイコロ・シュミレーターを作って、確認してみた。
試行100万回で0.444397だから、計算結果は正しい!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import random as rd same_count = 0 repeat = 1000 # repeat = 1000000 # 試行100万回で0.444397だった for i in range(repeat): #サイコロを3個ふって、配列に格納。 list = [rd.randint(1,6), rd.randint(1,6), rd.randint(1,6)] # 同じ値があったらゾロ目。set(集合)にすると同じ値は1つになるので、配列の要素数が減る result = len(list) != len(set(list)) # ゾロ目をカウントしておく if(result): same_count += 1 # 出目とゾロ目判定を出力 print(list, result) # どれくらい出たか? print(same_count / repeat) |