モンティ・ホール ジレンマの誤解

2001年12月26日 西山 伸

問題

「バタフライ・エコノミクス」(ポール・オームロッド著、塩沢由典監修・北沢格訳) という本を読んでいたら、P.112に次のような記述があった。この本の趣旨としては、 既存の経済学は、「人々は、常に自分が最も得になる事を完全に理解した上で、何事にも影響されず 自分で考えて正しく行動する」ということを前提に成り立っているが、それは間違えであり、 実際には人々はそんなに賢くはないんだよ、ということを主張している。 ここではその主張はおいておいて、その例として用いられているモンティホールジレンマについて 述べたい。
少し長いけれど、本文を引用させていただく。
間違いなく最良の選択肢が存在するような、非常に限定された特殊な状況においてさえ、ケンブリッジ の心理学者、デイヴィッド・グッドの言葉によれば「人間は、理にかなったモデルの厳格な基準に従う ことが苦手なのである。」という。グッドは、普段は分別ある市民を興奮で思考の混乱に追い込ませる、 モンティ・ホールとして知られる問題を例に挙げた。このゲーム番組の出場者は、バラエティ番組には ありがちな、恥ずかしくなるようなゲームをやらされた後で、A,B,Cの三つのドアの一つを開ける 権利を得る。このうち二つのドアの後ろには、子供が風呂遊びで使うプラスティックのアヒルのおもちゃ が置かれ、もう一つのドアの後ろには、一万ドルが置かれている。出場者は、自分の選んだドアの後ろ に置かれた商品をもらえる。聴衆の興奮が高まるなか、Aのドアが選ばれる。司会者のモンティは、Cの ドアを開けて(モンティはどのドアに何が隠されているのかを、すべて承知している)アヒルのおもちゃが 置かれているのを見せて、さらに緊張を高める。ここで出場者は、自分の決定を変えるチャンスを与えられる。 AではなくBを選んだらどうか、と。どうしたらよいのか?
というような内容なのだが、その次の行で「読者は自分の力で答えを出して欲しい」と書いてある。そこで 自分なりに考えた。まず、Cを開けてしまったのだからAもBも1/2で同じ確率だろうと思った。でもよく 考えて見ると、Aを選ぶ段階でAにお金がある確率は1/3のはずなので、それが変わるのが非常に奇異に 思える。僕はそこで、シミュレーションをしてみることにした。皆さんも以下の結果を見る前にじっくり 考えてみて欲しい。


解答(のはず)

rubyでプログラムを作り、1000回試行した。その結果、何回やっても670回 前後になり、考えを変えた場合の当たる確率が2/3になることがはっきりした。実際には、実行結果を見るま でもなく、プログラムを作っている間に、なんだ当たり前ジャン・・と思ったのだが。 つまり、最初にAにお金が入っている確率は1/3なので、途中で考えを変えない場合は、1/3の確率でお金を手に 入れることができる。しかし、BかCにお金が入っている確率は合計2/3で、Cがはずれだとしたら、 Bにある確率は2/3となり、考えを変えたら当たる確率は初志貫徹した場合の2倍であり、非常に有利になる。 要するに、考えを変えるか、変えないかのそれぞれの場合について当たる確率を求めるべきなところを、 Cが開けられた段階でゼロクリアしてAとBとどちらにあるかの確率を考えてしまいがちになるという ことだ。問題をきちんと把握していれば間違うことはない。
従って、上の問題に対する正しい答えは「Bのドアに変更するべき」となるだろう。その後に、 著者は次のように書いている。
デイヴィッド・グッドが書き留めているように、「多くの人は、説明を受けたあとも、なかなかその推論を 理解できない」のである。
ということなのだが、皆さんは納得できただろうか。


付録1:モンティホールの選択を1000回試行するプログラム(Ruby言語)。
途中で考えを変えた場合。


#!/usr/local/bin/ruby

$s = 0                                #最初に当たり回数をカウントする変数($s)を0に。

def monty                             #モンティホールの選択を1回試行するサブルーチン。
  ans=rand(3)                         #答え(ans)を乱数で決める。
  first=rand(3)                       #最初にあてずっぽうで開けようと思う扉(first)を決める
  for i in 0..2                       #モンティさんが開けるドア(open1)は、はずれであり、かつ最初に
    if i != ans and i != first        #  あけようと思ったものでもないどれかの扉。
      open1=i
      break
    end
  end
  for i in 0..2                       #回答者が開けるドア(decide)は、考えを変えたのだから、
    if i != first and i !=open1       # 最初のドア(first)ではなく、かつ、モンティさんの開けた
      decide = i                      # (open1)でもないどれかのドア。
      break
    end
  end

  if ans == decide                    #で、決定した(decide)ドアが、当たり(ans)と合っていれば
    $s += 1                           # $sに1を加える。
  end
end

for i in 0..1000                      #これを1000回繰り返す。
  monty
end

p $s                                  #で、結果はいかに?

このプログラムの実行結果。
$ monty.rb
683
$ monty.rb
666
$ monty.rb
658
$ monty.rb
659
$ monty.rb
663
$ monty.rb
676
$ monty.rb
694

2005年2月8日追記
このプログラムに関して誤りが指摘されていますが、それは誤解です。 プログラム中で、変数ansとfirstが一致したときの残りの扉は区別できないので、 モンティさんの選択を一方に固定しても確率は変わらないはずです。 実行速度の点からこのようにしてあり、誤りではありません。


付録2:モンティホールジレンマ関係のリンク

次のように、この問題に関しては結構たくさんのページがあるようだ。これ以外にもあると思うが、 とりあえず4つほどあげておく。興味がある人はもっと探してみてはいかがだろうか。 また、概して英語のほうが詳しく説明されている。
どちらにしても、結構有名な問題であるようで、それを間違えるというのはまずいよねぇ。 次のリンクは、非常に興味深い。この問題が有名になった経過が良くわかる。 思い込みって怖いなぁと思う。ぜひぜひ読んでみてほしい。 できれば感想も聞かせて欲しい。
ホームページへもどる