質問のサイコロの確率の問題をPythonで解いてみた。

 質問のサイコロの確率の問題Pythonで解いてみました。(^_^;
 Pythonでプログラムを作ってカウントさせてみたら次のようになりました。(^_^;
(1)120/1296=5/54
 「3個揃う」というのが、ちょっとあいまいで、「4個揃う」場合は含めないことにして、ぴったり「3個揃う」場合をカウントしました。
 ちなみに、「4個揃う」のも含める場合は、(120+6)/1296=7/72
(2)210/1296 = 35/216
 ちなみに、数学的に解く場合は、独立試行の確率(反復試行の確率)を使うか、同じものを含む順列で考えればいいと思います。
 やはり、問題の(1)番と(2)番のつながりを考えれば、ぴったり「3個揃う」場合と考えた方がいいような気がします。(2)番はぴったり「3個揃う」場合に「2個ずつ揃う」場合を足せばいいようです。

※参考URL
■独立な試行の確率,反復試行の確率

●DiceProb1.py

# coding: UTF-8
# DiceProb1.py
from fractions import Fraction
def myJoin(d):
  t=sorted(d)
  result=s=""
  for i in range(len(t)):
    if s!=str(t[i]):
      s=str(t[i])
      result+="|"
    result+=s
  return(result[1:])

total=cnt1=cnt2=0
for a in range(1,6+1):
  for b in range(1,6+1):
    for c in range(1,6+1):
      for d in range(1,6+1):
        total+=1
        t=[a,b,c,d]
        s=myJoin(t)
        if len(s)==5:
          cnt2+=1
          # print("%3d"%cnt2,t)
          if s.find("|")==1 or s.find("|")==3:
            cnt1+=1
            # print("%3d"%cnt1,t)

print("(1) %d/%d =" %(cnt1,total),Fraction(cnt1, total))
print("(2) %d/%d =" %(cnt2,total),Fraction(cnt2, total))

●実行結果

(1) 120/1296 = 5/54
(2) 210/1296 = 35/216

Pythonスタートブック

Pythonスタートブック

みんなのPython 第3版

みんなのPython 第3版

パーフェクトPython (PERFECT SERIES 5)

パーフェクトPython (PERFECT SERIES 5)