モンティ・ホール問題をPythonでシミュレーションしてみた

モンティ・ホール問題とは

 モンティ・ホール問題をご存知でしょうか?人間の直感と論理の間には乖離があるということを示す有名な例なので知っている人も多いかもしれません。

 Hacking: 美しき策謀 第2版 ―脆弱性攻撃の理論と実際の中で紹介されていたのがこの問題を知るきっかけでしたが、それ以外のにもこの問題はよく取り上げられています。(最も最近だと今放送中の終物語で出てきましたね!)

f:id:HowMuch:20151109111440j:plain

 

 ルールやらその辺はぶっちゃけwikipediaに詳しく載っていたので引用させていただきます。

ルールと概要

「プレーヤーの前に閉まった3つのドアがあって、1つのドアの後ろには景品の新車が、2つのドアの後ろには、はずれを意味するヤギがいる。プレーヤーは新車のドアを当てると新車がもらえる。プレーヤーが1つのドアを選択した後、司会者(モンティ)が残りのドアのうちヤギがいるドアを開けてヤギを見せる。

ここでプレーヤーは、最初に選んだドアを、残っている開けられていないドアに変更してもよいと言われる。プレーヤーはドアを変更すべきだろうか?」

1990年9月9日発行、ニュース雑誌 Parade にて、マリリン・ボス・サヴァントが連載するコラム欄「マリリンにおまかせ」において上記の読者投稿による質問に「正解は『ドアを変更する』である。なぜなら、ドアを変更した場合には景品を当てる確率が2倍になるからだ」と回答した。

引用:モンティ・ホール問題 - Wikipedia

最初に思ったこと

 「いやいや、そんなわけないだろ!!」ってのが最初の正直な感想です笑

 最後には二択になるわけなんだから新車を引き当てる確率はどう考えても50%だろ!と思うわけですよ。

 というわけで実際にPythonでこのゲームのシミュレータースクリプトを書いて実験してみました!

Pythonでシミュレーションのコードを書いてみる

 ちなみに今回書いたコードは以下の通りです(初めてGist使ってみました!)。引数でシミュレーション回数を指定します。

実験結果

 実験結果は以下の通りになりました。

f:id:HowMuch:20151109114516p:plain

  いや~見事に選択を変えた方が変えない方に比べて確率が二倍に漸近してきますね~。ぶっちゃけ自分の感覚が信じられなくなります笑

参考動画

 Youtubeでわかりやすい解説があったので張っておきます。41分40秒位からです。モンティ・ホール問題以外の話も面白いので良ければ全部観てみることをお勧めします。林先生は本当に話が上手い!

youtu.be

感想

 約一か月ぶりの更新になってしまいました。最近本やら映画を鑑賞していないので描くことがなくてね~久しぶりにまともな記事が書けたかなとうれしく思います。と言ってもプログラミングの練習とGistの実験のために書いたようなものなんですが笑 

 自分の直感と論理にはずれがあるということがよくわかる話題でしたね。数学や論理的な学問に触れていると時々魔法のような現象に出会うのですごく楽しいです!