【问题标题】:run 'while-loop' for many times多次运行“while-loop”
【发布时间】:2021-05-29 12:19:30
【问题描述】:

我必须在 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”的平均值?

`

【问题讨论】:

    标签: r for-loop while-loop


    【解决方案1】:

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

    代码

    mean(apply(matrix(runif(1e6), nrow = 20), 2, function(x){
      sum(cumsum(x) < 2)
    }))
    
    # 3.67506
    

    【讨论】:

    • @himalaya 不客气,如果您愿意,可以选择最有帮助的答案并点击复选标记接受它:)
    【解决方案2】:

    我认为您的条件应该是 s &lt; 2while 循环中。可以写在函数里面。

    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.96
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-27
      • 1970-01-01
      • 2018-09-27
      • 2011-08-27
      • 1970-01-01
      • 2012-05-18
      • 2015-04-17
      相关资源
      最近更新 更多