モンティ・ホール問題(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
実行結果
桜は満開で散り始めています。昨日の最高気温が21°で晴れ。
ホームセンターで、ミニトマトとナスを購入しました。今年は、ミニトマトはタワー付きの鉢、ナスは袋栽培という方法で育てることにしました。見た目はよいとはいえませんが、安価で畑が不要なのが気に入りました。