モンティホール問題

日々の破片 経由でいろんなところから「確率ゲーム?」と「モンティ・ホール ジレンマの誤解」。おもしろそうなので実際に手元で試してみる。

不変時の当たり 変心時の当たり
不変時の当たり := 変心時の当たり := 0. 10000 timesRepeat: [ | 配置 不変時の選択 モンティの選択 変心時の選択 | 配置 := #(当たり ハズレ ハズレ) asOrderedCollection shuffled. 不変時の選択 := 配置 atRandom. モンティの選択 := #ハズレ. 変心時の選択 := 配置 remove: 不変時の選択; remove: モンティの選択; anyOne "選ぶべき残り". 不変時の選択 = #当たり ifTrue: [不変時の当たり := 不変時の当たり + 1]. 変心時の選択 = #当たり ifTrue: [変心時の当たり := 変心時の当たり + 1]]. ^ {不変時の当たり. 変心時の当たり}
=> #(3347 6653)

ホントだ。選択を *必ず* 変えなければ恩恵にあずかれない…というのが(理屈で分かっていても)直感的にしっくりこないのところが気持ちわるくておもしろい。w 


直感に(いや、直感を実情に…)近づけるため、選択肢が 10 個(モンティが開示してくれるハズレの数が 8 個)だった場合も書いてみました。

不変時の当たり 変心時の当たり
不変時の当たり := 変心時の当たり := 0. 10000 timesRepeat: [ | 配置 不変時の選択 モンティの選択 変心時の選択 | 配置 := (Array new: 10 withAll: #ハズレ) asOrderedCollection. 配置 at: 配置 size atRandom put: #当たり. 不変時の選択 := 配置 atRandom. モンティの選択 := Array new: 配置 size - 2 withAll: #ハズレ. 変心時の選択 := 配置 remove: 不変時の選択; removeAll: モンティの選択; anyOne "選ぶべき残り". 不変時の選択 = #当たり ifTrue: [不変時の当たり := 不変時の当たり + 1]. 変心時の選択 = #当たり ifTrue: [変心時の当たり := 変心時の当たり + 1]]. ^ {不変時の当たり. 変心時の当たり}
=> #(1003 8997)