向向量添加值,直到其总和在一定范围内

时间:2019-02-27 16:15:54

标签: r binomial-coefficients

我正在尝试在R中编写一个简单的脚本,以输出二项分布值的向量,以使值的总和在给定范围内。我知道我将需要使用命令rbinom从二项式分布中提取值,但是我不知道如何编写代码,以便一次绘制一个值,直到总和在给定范围内(且不超过上限),然后代码停止。

我有使用R和MATLAB的基本经验,但就我的编程经验而言。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

有很长的路要走,可以帮助说明:

set.seed(101)
total  <- 0
trials <- 0
limit  <- 10
while(total < limit) {
  trials <- trials + 1
  total <- total + rbinom(1, 1, 0.5)
  cat("Number of trials: ", trials, "\t", "Total is: ", total, "\n")
}
#> Number of trials:  1      Total is:  0 
#> Number of trials:  2      Total is:  0 
#> Number of trials:  3      Total is:  1 
#> Number of trials:  4      Total is:  2 
#> Number of trials:  5      Total is:  2 
#> Number of trials:  6      Total is:  2 
#> Number of trials:  7      Total is:  3 
#> Number of trials:  8      Total is:  3 
#> Number of trials:  9      Total is:  4 
#> Number of trials:  10     Total is:  5 
#> Number of trials:  11     Total is:  6 
#> Number of trials:  12     Total is:  7 
#> Number of trials:  13     Total is:  8 
#> Number of trials:  14     Total is:  9 
#> Number of trials:  15     Total is:  9 
#> Number of trials:  16     Total is:  10

但是,调用rbinom将占用大量资源。另一种方法是将n的{​​{1}}参数设置为较大的值,而不是使用类似以下的方法:

rbinom

答案 1 :(得分:0)

一个简单的事实可能会有所帮助:如果您有二项式i.i.d。随机变量,那么对于它们的总和,有一个简单的规则

B1(n,p)+ B2(m,p)= B3(n + m,p)

因此,总和也以二项式分布。您可以根据需要将规则应用到尽可能长的时间。您知道n,也知道p,则可以计算总和值的概率,并查看它们是否在范围内。您还可以获得所需的二项式样本