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言語はグラフ作成がインタラクティブにできるので、
学習にはよい言語だと思う。
ベクトルの要素の選択を、[]内に条件で書けるのが面白い。