裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

モンティホール問題

2013年04月03日 | ブログラミング

3つのドアの後ろに,ヤギ,ヤギ,自動車が隠されている。
プレーヤーは,どれか一つのドアを選ぶ。自動車のドアなら自動車がもらえる。
ここで,司会者は必ず,プレーヤーが選んだのではないドアを開けて,ヤギであると知らせる(答を知っているので,必ずヤギのいるドアを開ける)。
司会者はプレーヤーに,「ドアを選び直してもいいよ」と言う。
さて,プレーヤーは,最初のドアのままでよいというか,残りのドアに変えるか。
自動車をあてる確率が高いのはどちらの戦略か。

メタ・モンティホール問題 で,別のブログ中のプログラムが間違っていると指摘していた。
この問題は何回か読んでいたが,シミュレーションプログラムは書いたことがなかったので書いて見た。

意外と短く書けたので記録しておく。

MontyHallProblem <- function(ChangeAnswer=TRUE) {
    door <- sample(c("景品", "ヤギ", "ヤギ")) # セット
    Player <- sample(3, 1) # どれかを選ぶ
    Monty <- setdiff(setdiff(1:3, Player), which(door=="景品"))[1] # 必ずヤギのドアを開ける
    if (ChangeAnswer) { # 最初の答を変えるなら
        Player <- setdiff(setdiff(1:3, Player), Monty)
    }
    return(door[Player] == "景品") # 当たったかどうか結果を返す
}

> mean(replicate(100000, MontyHallProblem()))
[1] 0.66588

> mean(replicate(100000, MontyHallProblem(FALSE)))
[1] 0.33387

確かに,司会者の助言に従って,ドアを変える方が倍も確率が高いのだなあと,実感。

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« なぜ統計学が最強の学問なの... | トップ | モンティホール問題(2) »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事