パズル万華鏡

面白いパズルの紹介と解説をします。

カードの確率問題(2)の考察

 カードの確率問題(2)の考察を紹介します。

●考察
f:id:isemba:20160123091925j:plain
(参考)Basicプログラム

' << CP211.bas >>
' Tiny Basic
' カードの確率問題(2)
'
Dim A(9): ' カードIの表面の色を表す。A(I)=0が赤、A(I)=1が白。
Dim B(9): ' カードIの裏面の色を表す。B(I)=0が赤、B(I)=1が白。
Dim C(1): ' C(0)は上面が赤になる回数、
          ' C(1)は上面が赤で勝つ下面が赤になる回数を記録する。
'
' 乱数の初期設定。
Randomize 123
'
' カードの初期設定。
' 表面:赤、裏面:赤のカード。
A(1)=0: B(1)=0
' 表面:赤、裏面:白のカード。
A(2)=0: B(2)=1
' 表面:白、裏面:白のカード。
A(3)=1: B(3)=1
'
' 出現回数の初期設定。
' C(0):上面が赤になる回数。
' C(1):上面が赤でかつ下面が赤になる回数。
C(0)=0: C(1)=0
'
' 試行回数の設定。
NMAX=10000
'
' 実験の実施。
For N=1 To NMAX
  ' 取り出したカードM。Mは1,2,3のいずれか。
  M=Int(3*Rnd)+1
  '
  ' 取り出したカードの表面が上面になる割合は、50%、
  ' 裏面が上面になる割合は50%になる。
  If Rnd < 0.5 Then
    ' 表面が上面になる場合
    ' 表面が赤(=0)なら、C(0)を1増やす。
    If A(M) = 0 Then 
      C(0)=C(0)+1
      ' 裏面が赤(=0)なら、C(1)を1増やす。
      If B(M) = 0 Then C(1)=C(1)+1
    End If
  Else
    ' 裏面が上面になる場合
    ' 裏面が赤(=0)なら、C(0)を1増やす。
    If B(M) = 0 Then 
      C(0)=C(0)+1
      ' 表面が赤(=0)なら、C(1)を1増やす。
      If A(M) = 0 Then C(1)=C(1)+1
    End If
  End If
Next N
'
' 実験結果の表示。
Print"試行回数:";NMAX
Print"上面が赤となる回数";C(0)
Print Using"下面が赤である確率:#.####";C(1)/C(0)
End

実行結果
f:id:isemba:20160123092117j:plain
f:id:isemba:20160123092125j:plain