Вопрос:

цикл while в R - условие имеет длину> 1 и будет использоваться только первый элемент

r

236 просмотра

1 ответ

5 Репутация автора

Мне нужно генерировать нормальные случайные величины с помощью алгоритма Марсалья-Брея в R. Алгоритм выглядит следующим образом:

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

Не знаете как решить, может кто-нибудь помочь, пожалуйста?

Автор: Dmytro Bihun Источник Размещён: 08.11.2017 11:26

Ответы (1)


1 плюс

31 Репутация автора

Решение

Вы должны рассмотреть возможность использования whileв цикле:

for(i in 1:100) { while(x>1){...} }

Автор: kejks Размещён: 08.11.2017 11:36
Вопросы из категории :
32x32