モンティホール問題はExcelでも計算出来るのではないかと思い試してみた所、思いの他学びが有った。
(ちなみに以前JavaScriptで計算した事もある)
「選択する扉を変更しない」パターンの計算は簡単だ。最初の選択の時点で全てが決まっているため、以降のステップは考慮する必要が無い。
当選の扉を RANDBETWEEN(0, 2) で算出、選択する扉も RANDBETWEEN(0, 2) で算出、それが一致するかどうかの判定で事足りる。
「選択する扉を変更する」パターンについても正解と1度目の選択については変わらず RANDBETWEEN(0, 2) で良い。
「モンティが開く扉」については話は複雑になるが、幸いにして近年Excelに追加されたLETやFILTER関数を使用して比較的楽に書く事が出来た。
=LET( all, SEQUENCE(3, 1, 0), kouho, FILTER(all, (all<>[@選択])*(all<>[@当選])), randkey, RANDBETWEEN(1, COUNT(kouho)), INDEX(kouho, randkey) )
LET内各行で行っている事は次の通り。
- 0, 1, 2の配列を用意
- 「当選」と「選択」に合致する要素を削除し、モンティが開く扉の候補を算出
- 2行目で出来たリストからどの要素を取得するのかランダムに決定
- 実際に開くドアの番号を取り出す
「変更後の選択」も同様にFILTERを使用し、「選択」とも「モンティが開く扉」とも一致しない扉を選択すれば良い。
=LET( all, SEQUENCE(3, 1, 0), FILTER(all, (all<>[@選択])*(all<>[@モンティが開く扉])) )