使用 R while 循环生成随机变量

Using R while loop to generate random variables

我想通过继续生成 U(0,1) 个随机变量来生成一个随机变量 X,只要它们的乘积低于 exp(-2)。然后我的随机变量 X 将等于生成的 U(0,1) 随机变量的数量减去 1.
我尝试使用 while 循环来执行此操作,但不确定为什么代码在我的控制台中没有 return 任何内容。请帮我指出我做错了什么?

p <- 1
counter <- 0

while(p < exp(-2)) {
  u <- runif(1)
  p <- p*u
  counter <- counter+1

  X <- counter - 1
  print(X)
}

更新

如果你想将过程复制100次,你可以使用replicate

replicate(
    100,
    {
        p <- 1
        counter <- 0
        repeat {
            p <- p * runif(1)
            counter <- counter + 1
            if (p < exp(-2)) {
                break
            }
        }
        counter
    }
)

我猜你可以在条件 p < exp(-2)

下使用 repeat
p <- 1
counter <- 0
repeat {
    print(counter)
    p <- p * runif(1)
    counter <- counter + 1
    if (p < exp(-2)) {
        print(counter)
        break
    }
}