Подсчет итераций - PullRequest
       5

Подсчет итераций

0 голосов
/ 25 апреля 2020

Как я могу найти на этой итерации, пока l oop, сколько итераций было необходимо до тех пор, пока условие больше не выполнялось. Сколько итераций было отклонено и сколько было принято?

a=2
b=2
n=10000
M=1.5
X = 0
AR = rep(NA,n)
set.seed(12345)
while (X < n) {
  u = runif(1,0,1)
  y = runif(1)
  if (u < dbeta(y,2,2)/(M*dunif(y,0,1))) { 
    X = X+1
    AR[X] = y
  }
}
AR

Ответы [ 2 ]

0 голосов
/ 25 апреля 2020

Вам нужен еще один счетчик iter для итераций, например,

  • с while
iter <- 0
while (X < n) {
  iter <- iter + 1
  u = runif(1,0,1)
  y = runif(1)
  if (u < dbeta(y,2,2)/(M*dunif(y,0,1))) {
    X = X+1
    AR[X] = y
  }
}
  • с repeat
iter <- 0
repeat {
  if (X==n) break
  iter <- iter + 1
  u = runif(1,0,1)
  y = runif(1)
  if (u < dbeta(y,2,2)/(M*dunif(y,0,1))) { 
    X = X+1
    AR[X] = y
  }
}
0 голосов
/ 25 апреля 2020

Просто добавьте переменные счетчика:

a=2
b=2
n=10000
M=1.5
X = 0
AR = rep(NA,n)
set.seed(12345)
i1 <- i2 <- 0
while (X < n) {
  i1 <- i1 + 1
  u = runif(1,0,1)
  y = runif(1)
  if (u < dbeta(y,2,2)/(M*dunif(y,0,1))) { 
    i2 <- i2 + 1
    X = X+1
    AR[X] = y
  }
}
AR

i1
i2
...