LoginSignup
12
10

More than 5 years have passed since last update.

モンティ・ホール問題をRubyで検証

Posted at

頭で考えたら、別に選び直さないでいいし、むしろ正解率が上がったような気になってしまって釈然としないので、コードで確認。

def f(resample)
  doors = Array.new(3, &:itself)          # 3つのドアがある
  1000000.times.count do
    car = doors.sample                    # 一つが当たり
    select = doors.sample                 # プレーヤーが1つ選択
    if select == car
      next true                           # いきなり正解
    end
    goat = (doors - [select, car]).sample # 残りのドアのハズレの1つを開示
    if resample
      select = (doors - [goat]).sample    # 選び直す(同じのを再選択する場合もある)
    end
    select == car
  end
end

# 選び直さない場合と、選び直した場合の当たり数
f(false)                        # => 333480
f(true)                         # => 665914

やっぱり選び直した方が正解率が上がるのか。なんでだろ。

参考

モンティ・ホール問題 - Wikipedia
https://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%B3%E3%83%86%E3%82%A3%E3%83%BB%E3%83%9B%E3%83%BC%E3%83%AB%E5%95%8F%E9%A1%8C

math - モンティ・ホール問題を解く - Qiita
http://qiita.com/ynakayama/items/1e1693503e27ce33e0a0

12
10
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
12
10