首页 > 解决方案 > R: rgeom(n,p) 当 n 和 p 不固定时

问题描述

情况:假设一个袋子里有 1 个蓝球和 1 个红球。在每一轮,随机选择一个球,然后与另一个(新)相同颜色的球一起返回(所以在 n 轮之后,袋子里总会有 n+2 个球)。

在第 n 轮抽到第一个红色的概率是 在此处输入图像描述

我想编写一个循环来模拟使用 rgeom(n,p) 代码从袋子中取出第一个红球之前所经过的圈数。但是由于 n 是未知的并且 p 每回合都在变化,我很困惑如何修改它。我尝试了以下代码,但它不会打印任何内容:

k=0
success = 0
while(success <= 1){
   k = k + 1
   if (rgeom(n, 1/(n+1) == 1) 
      success = success + 1
}
k

我该如何编写循环?

标签: r

解决方案


如果我进行一些小的更改,我会为 k 获得一些价值:

set.seed(123)
k=0
success = 0
while(success < 1){ # rather than <=1, which includes 0
k = k + 1
if (rgeom(n, 1/(n+1)) == 1) # missed closing parenthesis 
success = success + 1
}
k

我有k=8

但是有很多警告!


推荐阅读