TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

R言語でモンティ・ホール問題

モンティ・ホール問題をR言語モンテカルロ法で解いてみた。

R言語ははじめて使ったので、もっとエレガントな書き方があるかもしれない。

choice <- function(a) {
  a[runif(1,1,length(a)+1)]
}
game <- function(change) {
  doors <- c("A", "B", "C")
  car <- choice(doors)
  you <- choice(doors)
  goat <- choice(doors[doors != car & doors != you])
  if (change) you <- choice(doors[doors != you & doors != goat])
  return(car == you)
}

change = TRUE # or FALSE
n = 10000
correct_count = 0
for(i in 1:n) {
  result <- game(change)
  correct_count <- correct_count + result
}

correct_count / n

結果は、
選択を変える場合(change = TRUE) : 0.6592
選択を変えない場合(change = FALSE) : 0.3345

約2/3と1/3という正しい答えが得られた。


R言語はグラフ作成がインタラクティブにできるので、
学習にはよい言語だと思う。

ベクトルの要素の選択を、[]内に条件で書けるのが面白い。

VocalPitchMonitor

VocalPitchMonitor

  • Tadao Yamaoka
  • ミュージック
  • ¥250
Audio Spectrum Monitor

Audio Spectrum Monitor

  • Tadao Yamaoka
  • ミュージック
  • ¥120