Хотя цикл не будет разрываться в R - PullRequest
0 голосов
/ 26 ноября 2018
invest <- 10000 
p_value <- runif(1,0,1)

while (invest != 1000000 | invest != 0) {

    p <- rbinom(1,1,p_value)

    if (p == 0) {

    invest <- invest - 1000

    } else {

    invest <- invest + 1000

    } 

    print(invest)

}

Проблема, с которой я сталкиваюсь, заключается в том, что цикл while не будет прерываться при достижении 1000000 или 0 и, по существу, будет работать бесконечно (функция печати доступна только для того, чтобы наблюдать результирующие значения во время тестирования).Я не уверен, где я иду не так.Любое понимание приветствуется.

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

Вам нужно узнать, как работают логические операторы.

То, что вы написали: invest is not 1000000 OR invest is not 0.Это всегда правда.Не существует значения, для которого это не может быть истиной.

  1. инвестировать 0 => 0 не 1000000 => true

  2. инвестировать1000000 => 1000000 - это не 0 => правда

  3. инвестировать это любое другое значение => не 1000000 и не 0 => правда

0 голосов
/ 26 ноября 2018

Я думаю, что вы хотите:

invest <- 10000 
p_value <- runif(1, 0, 1)
while(0 < invest && invest < 1000000){
    if(rbinom(1, 1, p_value) == 0)
        invest <- invest - 1000
    else
        invest <- invest + 1000
    cat("invest:", invest, fill=TRUE)
}
...