使用 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
}
}
我想通过继续生成 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
}
}