0

私はモンティ・ホール問題の変種を書いており、別の人のコードに基づいています。違いは、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 != openanddoors != pickがドアAand Bandを削除するため、 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"
4

1 に答える 1