LoginSignup
8
3

More than 5 years have passed since last update.

モンティ・ホール問題をコード書いて勝率計算したらすごく納得した話

Last updated at Posted at 2016-11-16

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

「プレーヤーの前に閉まった3つのドアがあって、1つのドアの後ろには景品の新車が、2つのドアの後ろには、はずれを意味するヤギがいる。プレーヤーは新車のドアを当てると新車がもらえる。プレーヤーが1つのドアを選択した後、司会のモンティが残りのドアのうちヤギがいるドアを開けてヤギを見せる。
ここでプレーヤーは、最初に選んだドアを、残っている開けられていないドアに変更してもよいと言われる。プレーヤーはドアを変更すべきだろうか?」
(wikipedia)

正解は「変更する」で、変更した場合の勝率は66.7%になる。

確率統計や機械学習を勉強し始めたらいつかはお世話になるベイズの定理に絡んで出てくる。

モンティ・ホール問題(モンティ・ホールもんだい、英: Monty Hall problem)とは、確率論の問題で、ベイズの定理における事後確率、あるいは主観確率の例題のひとつとなっている。モンティ・ホール (Monty Hall、本名 Monte Halperin) が司会者を務めるアメリカのゲームショー番組、「Let's make a deal」の中で行われたゲームに関する論争に由来する。 一種の心理トリックになっており、確率論から導かれる結果を説明されても、なお納得しない者が少なくないことから、ジレンマあるいはパラドックスとも称される。「直感で正しいと思える解答と、論理的に正しい解答が異なる問題」の適例とされる。

コードを書いて勝率を計算してみた

最初は問題文を素直にコードに落として実行したのだが、少し考えると以下の形になり、実行するまでもなく納得した。

from random import randint

itr = 10000
cnt = 0
for i in range(itr):
    t = randint(1, 3)
    c = randint(1, 3)
    if t != c:
        cnt += 1
print(cnt/itr)

最初に選んだところがハズレなら、乗り換えるとアタリになる。最初にハズレを選ぶ確率は66.7%なので、乗り換えると勝率は66.7%。

8
3
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3