我必须在R中生成随机变量,直到变量的总和超过2,并调查生成的随机变量的数量,我称之为"n“。我已经使用while(sum>2)完成了这一部分,我现在的问题是如何多次运行它来获得"n“的平均值?使用"for“循环正确吗?非常感谢!下面是我的代码:`
n=0
s=0
while(s>2){
n=n+1
rv=runif(n,0,1)
s=s+sum(rv)}
print(n)我如何多次运行它才能得到"n“的平均值?
`
发布于 2021-02-27 17:40:24
为了提高效率,我建议你只调用runif()一次,并填充一个矩阵,其中每一列都有足够的样本,保证和超过2。然后我们可以找到有足够样本的点并计算平均值。
代码
mean(apply(matrix(runif(1e6), nrow = 20), 2, function(x){
sum(cumsum(x) < 2)
}))
# 3.67506发布于 2021-02-27 17:46:45
我认为你的情况应该是while循环中的s < 2。您可以在函数中编写它。
run_sim <- function() {
n=0
s=0
while(s<2){
n=n+1
rv=runif(n,0,1)
s=s+sum(rv)
}
return(n)
}并使用replicate重复该过程n次并获取mean。
mean(replicate(100, run_sim()))
#[1] 2.96https://stackoverflow.com/questions/66397326
复制相似问题