モンティホール問題.xlsx

モンティホール問題は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内各行で行っている事は次の通り。

  1. 0, 1, 2の配列を用意
  2. 「当選」と「選択」に合致する要素を削除し、モンティが開く扉の候補を算出
  3. 2行目で出来たリストからどの要素を取得するのかランダムに決定
  4. 実際に開くドアの番号を取り出す

「変更後の選択」も同様にFILTERを使用し、「選択」とも「モンティが開く扉」とも一致しない扉を選択すれば良い。

=LET(
    all, SEQUENCE(3, 1, 0),
    FILTER(all, (all<>[@選択])*(all<>[@モンティが開く扉]))
)