而R中的循环-条件具有长度>;1且仅使用第一个元素
我需要用R中的Marsaglia-Bray算法生成正态随机变量。该算法如下所示:而R中的循环-条件具有长度>;1且仅使用第一个元素,r,R,我需要用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 while(X>1) 生成U1,U2~Unif[0,1] U1 在循环中应考虑使用而: for(1:
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
while(X>1)
生成U1,U2~Unif[0,1]
U1 在循环中应考虑使用<代码>而<代码>:
for(1:100中的i)
{
而(x>1){…}
}
我需要得到的结果是向量x(x1)循环),但在这种情况下,for(I in 1:100){while(I>1){…}
我只得到一个元素x1){u1
循环的是一个好主意,但是你需要在while循环中使用x[I]
。(而且我真的不喜欢“你必须在循环中使用”这句话-而
本身就是一个循环,大多数时候它不需要在另一个循环中。)@Gregor:你说得对,那句话并不总是正确的。编辑。你试过调试吗?
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