パズル万華鏡

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

モンティ・ホール問題(1)の考察

 モンティ・ホール問題(1)の考察を行います。


(1)の考察

 シミュレーションを行った。

実験結果より、解答を変更しないより、解答を変更した方が正解となる確率が高くなることが予想される。

●プログラム

' モンティ・ホール問題
' Tiny Basicで記述。
'
Dim A(9): ' A(J)=0 :選択肢Jは不正解、
          ' A(J)=1 :選択肢Jは正解、
          ' A(J)=-1:選択肢Jは出題者の指定
          ' を意味する。
'
' 乱数の初期化。
Randomize
'
Print"選択肢の数 試行回数 変更なし 変更あり"
'
Do
  ' 選択肢の数M、試行回数NMAXの読み込み。
  Read M,NMAX
  If (M <= 0) or (NMAX <= 0) Then Exit Do
  '
  ' 初期設定。
  COUNT1=0: ' 選択肢・変更なしで当たる回数。           
  COUNT2=0: ' 選択肢・変更ありで当たる回数。           
  '                                            
  ' 実験をNMAX回繰り返す。
  For N=1 To NMAX                                 
    ' 正解の選択肢Jと不正解の選択肢(J以外)をランダムに決める。 
    For I=1 To M: A(I)=0: Next I                
    J=Int(M*Rnd)+1                              
    A(J)=1                                      
    '                                           
    ' 解答者は選択肢Kをランダムに選択する。  
    K=Int(M*Rnd)+1                              
    '                                           
    ' 出題者は、解答者が選んだ選択肢Kと正解以外の中から
    ' 不正解の選択肢Rをランダムにひとつ教える。
    Do                                         
      R=Int(M*Rnd)+1                           
      If (R <> K) and (A(R) = 0) Then           
        A(R)=-1: Exit Do                       
      End If                                    
    Loop                                       
    '                                           
    ' 解答者の判断。
    If K = J Then 
      ' 解答者が選択肢を変えないで、正解となる((a)の場合)。
      COUNT1=COUNT1+1              
    Else
      ' 解答者が選択肢を変えた場合。  
      Do                                         
        S=Int(M*Rnd)+1                           
        If (S <> K) and (A(S) <> -1) Then           
          K=S: Exit Do                           
        End If                                    
      Loop                                       
      '                                          
      ' 解答者が選択肢を変えて、正解となる((b)の場合)。
      If K = J Then COUNT2=COUNT2+1              
    End If
  Next N
  '                                     
  Print Using"##########";M;
  Print Using"  ########";NMAX;
  Print Using"  #.##### ";COUNT1/NMAX;                   
  Print Using"  #.##### ";COUNT2/NMAX
Loop                   
End
'
' データ。
Data 3,1000000, 4,1000000, 5,1000000, 6,1000000, 7,1000000
Data 8,1000000, 9,1000000, 0,0

実行結果
f:id:isemba:20150404115914j:plain
f:id:isemba:20150404115924j:plain
 桜は満開で散り始めています。昨日の最高気温が21°で晴れ。
ホームセンターで、ミニトマトとナスを購入しました。今年は、ミニトマトはタワー付きの鉢、ナスは袋栽培という方法で育てることにしました。見た目はよいとはいえませんが、安価で畑が不要なのが気に入りました。