подсчет количества выполнений цикла while, пока он не будет помещен в цикл for (один и тот же вывод повторяется снова и снова) - PullRequest
0 голосов
/ 13 июня 2019

Мне нужно посчитать, сколько раз этот цикл выполняется, и я могу сделать это для одного экземпляра. Тем не менее, я хочу, чтобы это происходило несколько раз и записывала все циклы в векторе.

Следующий код подсчитывает количество выполнений цикла while (может варьироваться в зависимости от результата функции sample()):

x= 0
count = 0

while (x < 10) {
  y = sample(c(1,2), 1, c(.50,.50), replace = T)
  x = x+y
  count = count+1
}
count

Это отлично работает. Дает мне одно число, которое может меняться случайным образом, но для обсуждения я предполагаю, что это 8.

Однако, когда я помещаю это в цикл for:

x= 0
count = 0
counts = c()

for (i in 1:5) {
  while (x < 10) {
    y = sample(c(1,2), 1, c(.50,.50), replace = T)
    x = x+y
    count = count+1
  }
  counts[i] = count
}  
counts

Это дает мне то же значение для подсчета, что и код без цикла, но повторяется 5 раз. Если предположить, что счет будет 8, этот код вернет 8 8 8 8 8

То, что я надеюсь вернуть из цикла for, это 5 отдельных отсчетов, так что вывод выглядит примерно так (эти числа являются произвольными из-за случайной выборки) 8 5 9 7 4

Пожалуйста, помогите мне понять, почему это происходит, потому что у меня были подобные проблемы раньше.

1 Ответ

2 голосов
/ 13 июня 2019

Вам необходимо сбросить x и count в цикле for, в противном случае x будет уже> 10 на втором (и 3-5-м) цикле for:

for (i in 1:5) {
    x = 0
    count = 0
    while (x < 10) {
        y = sample(c(1,2), 1, c(.50,.50), replace = T)
        x = x+y
        count = count+1
    }
    counts[i] = count
}  
counts
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...