我有一个代码可以模拟转圈数,直到从包中抽出第一个红球为止(包本来有1个红球和1个蓝球,然后每转一圈,球便以相同的颜色返回。 n圈,袋子中有n + 2个球)。
k = 0
success = FALSE
while (success == FALSE) {
k = k + 1
if (rgeom(n, 1/(n+1)) == 1) success = TRUE
}
k
现在,我想将此代码放入另一个可以运行1000次的循环并将结果保存到名为x的R向量中,从而将该代码运行1000次。我试图在ith循环的末尾放置x [i] = n之类的东西,并在上述代码的开头写了(i in 1:1000),但实际上没有任何作用。有什么建议吗?
我相信以下是对问题中所描述问题的模拟。
set.seed(1234) # Make the results reproducible
result <- replicate(1000, {
k <- 0
success <- FALSE
while(!success) {
success <- rgeom(1, 1/(k + 2)) == 1
k <- k + 1
}
k
})
barplot(table(result))
result <- replicate(1000, {
k = 0
success = FALSE
while (success == FALSE) {
k = k + 1
if (rgeom(1, 1/(n+1)) == 1) success = TRUE
}
k
})
我还有另一个:
result <- sapply(1:1000,
function(x) {
k = 0
success = FALSE
while (success == FALSE) {
k = k + 1
if (rgeom(n, 1/(n+1)) == 1) success = TRUE
}
return(k)
})