我有一个我正在研究的代码,它应该模拟负二项式随机变量。我知道R中已经存在可以执行此类操作的函数,但我无法使用它们并且需要使用while
循环或类似的东西。
我知道某天下雨的概率是10%,我需要模拟选择随机天数,直到选择了5个下雨天。我应该回到我有多少天,直到我有5个下雨天。
我有以下代码,它可以模拟我下雨一天所需的天数,但我不知道应该如何调整它。我最初的想法是我会将num.days = 1
更改为num.days = 5
,但这只会改变迭代在while
循环中开始的点,不是吗?
我需要在代码中添加什么才能获得在5个下雨天之前所需的天数?
current.day = sample(c("R","NR"),1,prob = c(0.10,0.90))
num.days = 1
while(current.day != "R"){
current.day = sample(c("R","NR"),1,prob = c(0.10,0.90))
num.days = num.days+1
}
num.days
all.days = sapply(1:20000,function(i){
current.day = sample(c("R","NR"),1,prob = c(0.10,0.90))
num.days = 1
while(current.day != "R"){
current.day = sample(c("R","NR"),1,prob = c(0.10,0.90))
num.days = num.days+1
}
return(num.days)
})