LoginSignup
0
0

More than 3 years have passed since last update.

モンティホール問題をRubyで検証したら、よく理解できてよく解らなくなった話

Last updated at Posted at 2020-10-10

モンティホール問題って何?

モンティホール問題とは、直感的に納得できない確率の問題です。
ネットで調べてもなんだかスッキリしなかったので自分で検証してみることにしました。

こちらのサイトでも概要は分かりますが、少しこのページでも解説します

モンティホール問題の概要

箱を選んだ段階で、はずれの箱を1つ開けてくれます。
その後選んだ箱を変えることができるとき、選択肢を変える・変えないのどうするのがお得かという問題です。

箱1 箱2 箱3
当たり はずれ はずれ

例えば、上のように3つある箱の中から箱2を選んだ状態で(まだ開けてはない)、ゲームの主催者がはずれの箱を開けたとします。
状況的には下のような感じ

箱1 箱2 箱3
当たり はずれ はずれ
選択中 OPEN

箱3がはずれと分かった時点で選択を変更できる場合に、変更すべきかどうか?という問題です。

直感的には当たり or はずれの2択なのでどちらを選んでも変わらなそうですが、数学的には次のようになります

そのまま 選択肢を変更
当たりの確率 33% 67%

これを最初見たとき「そんなバカな…」って思いました。
解説を見てもいまいち納得できなかったので、プログラミングを使って検証したらとても腑に落ちたので解説していきます。
(でも結局新たな謎が増えました)

さっそくコーディングして検証

Rubyを使って検証していきます。
(もう少しリファクタはできますが、やってることが分かりやすいようにあえて冗長に書いてる部分もあります。それでも少し分かりにくいかも…笑)

コード

ruby
# 試行回数(100万回くらいやれば十分でしょ)
number = 1_000_000

# 当たりとはずれを用意
win = 1
lose = 0

# 箱を用意
boxes = [win, lose, lose]

# ケース1(選択肢を変更しない場合)
count = 0
number.times do
  # ランダムでどの箱を選ぶか決定
  random_number = [0, 1, 2].sample
  selected_box = boxes[random_number]
  # はずれの箱を開ける(次に選択肢を変更しないのでこの処理は特に意味がない)
  random_number != 2 ? boxes.delete_at(2) : boxes.delete_at(1)
  # 選んだ箱のままで当たりかどうか判定
  count += 1 if selected_box == win
end
# 確率の計算
prob_1 = (count.to_f / number.to_f).round(5) * 100

puts "選択肢を変更しない場合の確率: #{prob_1}%"

# ケース2(選択肢を変更する場合)
count = 0
number.times do
  # 箱を選択
  random_number = [0, 1, 2].sample
  selected_box = boxes[random_number]
  # はずれの箱を開けて選んだ箱を変更
  if random_number == 0
    boxes.delete_at(2)
    selected_box = boxes[1]
  elsif random_number == 1
    boxes.delete_at(2)
    selected_box = boxes[0]
  else
    boxes.delete_at(1)
    selected_box = boxes[0]
  end
  # 判定
  count += 1 if selected_box == win
end
# 確率の計算
prob_2 = (count.to_f / number.to_f).round(5) * 100

puts "選択肢を変更した場合の確率: #{prob_2}%"


結果

ファイルを実行した結果です。
確かに直感が間違っていることがわかります
6222a43d3cc8b2ba6e6aba05f660e0b6.png

少し解説

この問題をRubyで解いてみて、そゆことかーと思ったことを解説していきます。
ポイントは最初に選んだ選択肢による場合分けです

箱を選んだ時点ではずれの箱を一つ教えてくれるわけですから、この問題は次の2パターンに場合分けできます。

  • 最初に当たりの箱を選んでいた場合
  • 最初にはずれの箱を選んでいた場合

それぞれの確率は当然次のようになります

最初に当たりの箱を選ぶ確率 最初にはずれの箱を選ぶ確率
33% 67%

では次にここから選択肢を変える・変えないの話をみていきます

選択肢を変えない場合

選択肢を変えない場合、最初に当たりの箱を選ばないといけません。
もともと当たりを引く確率が33%なので、この場合の当たりを引く確率は33%になります

選択肢を変える場合

選択肢を変える場合、最初に当たりの箱を選んでいたらはずれ、はずれを選んでいたら当たりになります。
つまり、最終的に当たりを引くためには最初にはずれの箱を選択する必要があります。
最初にはずれを選ぶ確率は67%ですので、この場合の当たりを引く確率は67%になります

少し疑問

ここまで解説してきましたが、書いてる途中で疑問も出てきました。
はずれの箱が開かれた段階で、別の参加者がやってきたとしましょう。

このとき、別の参加者から見たらどちらの箱が当たりかどうかは五分五分では?

この疑問を思いついたはいいが上手い説明ができないので、数学に詳しい方がいれば是非コメントしてください。

知識によって確率が変わるという謎の現象なんですよね
半分納得できて半分納得できてない。。。

最後に

すこしモヤっとして終わってしまいましたが、面白い問題でした!
モンティホール問題は単純なのに奥が深いですね〜

0
0
1

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
0
0