将代码运行1000次并将其保存在R向量中

问题描述 投票:0回答:3

我有一个代码可以模拟转圈数,直到从包中抽出第一个红球为止(包本来有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),但实际上没有任何作用。有什么建议吗?

r
3个回答
3
投票

我相信以下是对问题中所描述问题的模拟。

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))

3
投票
result <- replicate(1000, {
  k = 0
  success = FALSE
  while (success == FALSE) {
    k = k + 1
    if (rgeom(1, 1/(n+1)) == 1) success = TRUE
  }
  k
})

2
投票

我还有另一个:

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)
                 })
© www.soinside.com 2019 - 2024. All rights reserved.