日々の破片 経由でいろんなところから「確率ゲーム?」と「モンティ・ホール ジレンマの誤解」。おもしろそうなので実際に手元で試してみる。
不変時の当たり := 変心時の当たり := 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)