私はモンティ・ホール問題の変種を書いており、別の人のコードに基づいています。違いは、3 つのドアの代わりに "n" ドアがあることです。n = 4
この質問について言いましょう。ドアには というラベルが付いてA, B, C and D
います。
コードは次のとおりです。
n <- 4
doors <- LETTERS[seq( from = 1, to = n )]
xdata = c()
for(i in 1:10000) {
prize <- sample(doors)[1]
pick <- sample(doors)[1]
open1 <- doors[which(doors != pick & doors != prize)]
open <- sample(open1,n-2)
# the line with the problem
switchyes <- doors[which( doors != open & doors != pick)]
if(pick==prize) {
xdata <- c(xdata, "noswitchwin")
}
if(switchyes==prize) {
xdata=c(xdata, "switchwin")
}
}
コードを実行すると、次の警告が表示されます。
There were 50 or more warnings (use warnings() to see the first 50)
問題は、次の行が原因のようです。
switchyes <- doors[which( doors != open & doors != pick)]
C
これは、ステートメントdoors != open
anddoors != pick
がドアA
and B
andを削除するため、 1 つのアイテム ( ) のみを返す必要がありD
ます。ただし、複数取得していB
ますC
。何が起こっているか分かる人はいますか?
length(which(xdata == "switchwin"))
# [1] 4728
length(which(xdata == "noswitchwin"))
# [1] 2424
switchyes
# [1] "B" "C"
open
# [1] "B" "D"
open1
# [1] "B" "D"
pick
# [1] "A"
prize
# [1] "C"