首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多次运行“while-loop”

多次运行“while-loop”
EN

Stack Overflow用户
提问于 2021-02-27 17:28:10
回答 2查看 69关注 0票数 1

我必须在R中生成随机变量,直到变量的总和超过2,并调查生成的随机变量的数量,我称之为"n“。我已经使用while(sum>2)完成了这一部分,我现在的问题是如何多次运行它来获得"n“的平均值?使用"for“循环正确吗?非常感谢!下面是我的代码:`

代码语言:javascript
复制
n=0
s=0
while(s>2){
n=n+1
rv=runif(n,0,1)
s=s+sum(rv)}
print(n)

我如何多次运行它才能得到"n“的平均值?

`

EN

回答 2

Stack Overflow用户

发布于 2021-02-27 17:40:24

为了提高效率,我建议你只调用runif()一次,并填充一个矩阵,其中每一列都有足够的样本,保证和超过2。然后我们可以找到有足够样本的点并计算平均值。

代码

代码语言:javascript
复制
mean(apply(matrix(runif(1e6), nrow = 20), 2, function(x){
  sum(cumsum(x) < 2)
}))

# 3.67506
票数 2
EN

Stack Overflow用户

发布于 2021-02-27 17:46:45

我认为你的情况应该是while循环中的s < 2。您可以在函数中编写它。

代码语言:javascript
复制
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

代码语言:javascript
复制
mean(replicate(100, run_sim()))
#[1] 2.96
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66397326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档