モンティ・ホール問題

“Mathematics is the logic of certainty. Probability is the logic of uncertainty. Life is uncertain.” — Joseph Blitzstein

Finlandからきているポスドクとの雑談でこの話がでました。ところで彼女は3児の母であり、優秀かつ頑張りやです。感嘆します。

有名なMonty Hall Problemです。もし初見であれば一考に値します。
人気の故に多くのバージョンがありますが、もっとも古典的なやつでいきましょう。

Let’s Make a Dealというゲームショー。ホストはMonty Hallさん。
ゲームのルール
– 3つのドアがあり、1つには車、残りの2つにはヤギが隠されている。
– あなたはそれらのどこかにある車を当てたい。
– はじめに、あなたはドアの一つを選択します。
– 次に車のありかを知っているMontyは、あなたの選択していないドアのうちヤギのいるドアを開けます(大事な前提:もし選択されていない二つのドア両者にヤギがいる場合、Montyは1/2の確率でどちらかをあける)。

さて質問です:Montyがドアを開けヤギを見せた後、どの方法をとれば車をとる確率がもっとも高いでしょうか?
1. 最初に選んだドアからまだ空いていないドアに移る。
2. 最初に選んだドアから移らないべきでしょうか。
3. それともどちらも一緒?

以下の簡単なRコードではsimulationによる答えがでます。
しかし「なぜ」でしょうか。

いくつかの考え方があります。
Conditional probabilityで考える方法(hint: 車の場所もしくはMontyの開けるドアでcondition)、樹形図を描く方法などなど。考えてみてはいかがでしょうか。

set.seed(1)

montyhall <- function(switch=TRUE) {
  doors <- sample( c("car", "goat1", "goat2"), 3 )
  pick  <- sample(1:3, 1)
  if (switch) {
    doors[pick] != "car" # Wins if there is no car in the originally picked car (because you switch to the unopened door)
  } 
  else {
    doors[pick] == "car" # Wins if there is car in the originally picked door
  }
}

# Simulation
switch    <- sapply( 1:10^6, FUN=function(i) montyhall(switch=TRUE) )
no_switch <- sapply( 1:10^6, FUN=function(i) montyhall(switch=FALSE) )

# Answer
print(paste0("By switching, the probability to win the car is: ", mean(switch)))
print(paste0("By not switching, the probability to win the car is: ", mean(no_switch)))

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です