我需要使用R中的Marsaglia-Bray算法生成正常的随机变量。算法如下所示:
while(X>1)
generate U1,U2~Unif[0,1]
U1<-2*U1-1, U2<-2*U2-1
X<-U1^2+U2^2
end
Y<-sqrt(-2*log(X)/X)
Z1<-U1*Y
Z2<-U2*Y
return Z1,Z2
部分代码存在错误
x <- numeric(100)
while(x>1){
u1 <- runif(1)
u2 <- runif(1)
u1 <- 2*u1-1
u2 <- 2*u2-1
x <- u1^2+u2^2
}
Warning message:
In while (x > 1) { :
the condition has length > 1 and only the first element will be used
不知道如何解决它,有人可以帮忙吗?
答案 0 :(得分:1)
您应该考虑在循环中使用while
:
for(i in 1:100)
{
while(x>1){...}
}