なべ神 - NABEGOD

キモオジの徒然なる雑記。ゲーム・アニメが趣味

ゲーム 雑学

モンティ・ホール問題 実装してリファクタリングしてみるとあまりにスッキリしすぎた[PHP]

投稿日:2017年2月26日 更新日:

スポンサーリンク

パラドックス系の話題で挙がる
モンティ・ホール問題
結果を聞いても、納得できない人が多い結構有名な問題です。

「プレーヤーの前に閉まった3つのドアがあって、1つのドアの後ろには景品の新車が、2つのドアの後ろには、はずれを意味するヤギがいる。プレーヤーは新車のドアを当てると新車がもらえる。プレーヤーが1つのドアを選択した後、司会のモンティが残りのドアのうちヤギがいるドアを開けてヤギを見せる。
ここでプレーヤーは、最初に選んだドアを、残っている開けられていないドアに変更してもよいと言われる。プレーヤーはドアを変更すべきだろうか?」
1990年9月9日発行、ニュース雑誌 Parade にて、マリリン・ボス・サヴァントが連載するコラム「マリリンにおまかせ」において上記の読者投稿による質問に「正解は『ドアを変更する』である。なぜなら、ドアを変更した場合には景品を当てる確率が2倍になるからだ」と回答した。すると直後から、読者からの「彼女の解答は間違っている」との約1万通の投書が殺到し、本問題は大議論に発展した。

引用先
モンティ・ホール問題(wikipedia)

選びなおすと、確率2倍になる?嘘でしょ?
ドアを変えても変えなくても、確率同じでしょ?

というのが納得できない理由です。

確かに直感的には、1/2に感じます。
当然1/2だろ。何を考える必要がある。とさえ思います。

こういう時は実際に動かして検証すると良いと思います。

実装方針

  • PHPで実装してみる(趣味)
  • 最初のドアが当たりの回数と2つ目のドア(選びなおすドア)が当たりの回数を数える
  • 考えをまとめる目的なので、動作確認してないです。ごめんなさい。
  • 念のため100万回試行できるようにしておこうか・・

そして実装(PHP)

まず、問題の意味をできるだけ、表現するように実装してみました。
forの中身がキモですね。

リファクタリングする

問題を整理したいので、
リファクタリングしていきます。

まず、
3つのドアの関係性を結果から場合わけでまとめます。
すいません、事前準備みたいな感じになってしまいました。

結果回数を格納するカウンターを、
判別した時点でカウントされるように、移動してしまう。

この部分の内容を

こちらにまとめる。
上の内容は同時に削除する。

$open_doorと$second_doorは、以降どこにも使用されていない。
結果をカウントできるため、消去可能。

これは、司会者が開けるドアが何なのか、
また、2つ目の選択肢のドアが何なのかは、
結果から見ると、全く関係ないという事ですね。

さらに、else if ($rest_door_1)と $rest_door_2 のブロックの中身が
同じなので・・

orでまとめる。

ここまで来ると、

最初に選んだドアが当たりかどうかだけが、この問題のキモである

という事が見た目で分かります。

最初のドアが当たりなら、$rest_door_1と$rest_door_2は外れ確定。
最初のドアが外れなら、
$rest_door_1か$rest_door_2に当たりが存在する為、
このように省略できます。

さらに三項演算子で、1行で表すと(ダメでしょうか)

やりすぎですけど、スッキリした気がします。
公式ぽいですねえ。

わかった事

最初に選択した、1つ目のドアが当たりかどうかだけで
結果が決まってしまう事が分かります。
  • 最初のドアが当たりなら、最初のドアが当たり
  • 最初のドアがハズレなら、2つ目の選択肢のドアが当たり

という事ですので、

最初のドアが当たりの確率は、1/3
最初のドアがハズレの確率は、2/3

最初のドアがハズレであれば、2つ目の選択肢のドアが当たりなので

2つ目の選択肢のドアの当たりの確率は、2/3

最初のドアが当たりの確率は 1/3
2つ目の選択肢のドアの当たりの確率は 2/3

確かに2つ目の選択肢のドアは、
最初のドアが当たる確率の2倍になりました。

ちなみに、リファクタリング後のコード

モンティ・ホールの問題をリファクタリングしていくと、こうなってしまいました。
いきなりこんなコード見せられても、何なのか、全く意味わかんないですね。

あとがき

パラドックスは、ソーシャルゲームに利用されて、
そして禁止されてきた歴史があります。

コンプガチャが最たるものですね。
コンプガチャはちょっと勘の良い人であれば、
これやばい仕様のやつだ、と。気がつくと思うのですが、
モンティ・ホール問題くらい気づきづらいパラドックスを組み込んだガチャが存在するのなら・・
と、すでに存在しているのでしょうか。

ドキドキします・・

スポンサーリンク

スポンサーリンク

関連記事

スキー場でのレンタルスキー4点セットの選び方 初心者でまったり滑りたい方向け

Contents1 ブーツ選びは最重要です2 硬いブーツはダメなの?3 ズボンも重要4 ウェア5 ストック6 板7 あとがき 雪国育ちですので、子供の頃は年に50回位はスキーしていましたが、 東京に引 …

【はねろ!コイキング】ヒールリーグ後エクストラ周回時のコイン入手量

ヒールリーグ追加アップデートにより、ブリーダーランクMAXが63になった事で、コイン入手イベントのコイン入手量が増大しています。 掲載している内容は、ブリーダーランク63で、コイキングの個性ボーナスな …

指が痛い。ゲーム中すごい力が入ってるようだ

no image

こんにちは。 最近スプラトゥーン2をやっているのですが、5〜6時間続けた後に、ふと指を確認して見ると、指が痛い。 どうやら無意識でものすごい力でコントローラを握っているようです。 スプラトゥーンという …

【はねろ!コイキング】ポケドロップを使う価値のあるポケモン(無課金で無難に)

ポケドロップはそこそこ貴重なアイテムです。 簡単に使うわけにはいきません。 厳選して、有用なキャラから優先して使っていきたいですよね。 2017/5/30追記 と思っていたのですが、最終的には取り放題 …

【雑学】選挙で投票したい人がいない場合、白紙投票で年代別投票率上昇を狙う

no image

面倒だから投票に行かない。という人がいるのは仕方ない事かと思います。 ただ、投票したい人がいないから投票に行かないという人の場合、白紙でも無効票でもいいので、投票に行った方が良いと思いますよ。 年代別 …