我正在尝试在R中编写一个简单的脚本,以输出二项分布值的向量,以使值的总和在给定范围内。我知道我将需要使用命令rbinom从二项式分布中提取值,但是我不知道如何编写代码,以便一次绘制一个值,直到总和在给定范围内(且不超过上限),然后代码停止。
我有使用R和MATLAB的基本经验,但就我的编程经验而言。
感谢您的帮助!
答案 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
,则可以计算总和值的概率,并查看它们是否在范围内。您还可以获得所需的二项式样本