Я пытаюсь ответить на следующий вопрос, используя простую процедуру выборки Монте-Карло в R: Урна содержит 10 шаров. Два красных, три белых и пять черных. Все 10 рисуются по одному без замены. Найти вероятность того, что первый и последний выпавшие шары являются черными.
Я пробовал два подхода, и ни один из них не работает.
Вот более длинный подход, который для меня более понятен:
balls <- c(1:10) #Consider 1-5 black, 6-8 white, and 9-10 red.
pick.ball <- function(balls){
sample(x = balls, 1, replace = FALSE)
}
experiment <- function(n){
picks = NULL
keep <- NULL
for(j in 1:n){
for(i in 1:10){
picks[i] <- pick.ball(balls = balls)
}
keep[j] <- ifelse(picks[1] == any(1:5) & picks[10] == any(1:5), 1, 0)
}
return(length(which(keep == 1))/n)
}
Вот мой второй, более простой подход, который показывает мое непонимание цикла повторения. Не беспокойтесь об этом - это продолжается вечно. Но если бы кто-то мог помочь мне лучше понять почему, это было бы оценено!
balls <- c(1:10) #Consider 1-5 black, 6-8 white, and 9-10 red.
pick.ball <- function(balls, n){
keep = NULL
for(i in 1:n){
picks <- sample(x = balls, 10, replace = FALSE)
keep[i] <- ifelse(picks[1] == any(1:5) & picks[10] == any(1:5), 1, 0)
repeat{
picks
if(length(keep) == n){
break
}
}
}
return(which(keep == 1)/n)
}