Я работаю над проблемой домашнего задания, когда зерновая компания проводит акцию, в которой в каждую коробку входит 1 из 4 бесплатных игрушек.Цель состоит в том, чтобы собрать все 4 игрушки, покупая по одной коробке за раз.
Есть два сценария :
1. Каждая игрушка имеет одинаковую вероятность
2. У игрушек есть вероятности выбора 0,10, 0,25, 0,25 и 0,40 .
Я хочу разработать функцию, которая принимает каждый номер игрушки и вероятность выбора каждой игрушки в качестве входных данных, имитирует покупку коробок с хлопьями путем выборки из номеров игрушек.пока не будет получена хотя бы одна игрушка, остановится и сообщит, сколько коробок было куплено.
Конечная цель - использовать эту функцию в исследовании Monte Carlo
, чтобы выяснить, в среднем, сколько потребителей коробокнужно будет купить, чтобы собрать все игрушки, и доля потребителей, которые должны будут купить, по крайней мере, 14 коробок, чтобы собрать все игрушки.
Я пытался создать loop (while, repeat)
, образцы которых довектор содержит все значения игрушек, но циклы работают бесконечно.Я подозреваю, что есть проблема с условием, которым я кормлю цикл.
box_buyer <- function (purchase_options, probabilities) {
boxes <- numeric()
while (!purchase_options %in% boxes) {
append(boxes, sample(purchase_options, 1, probabilities, replace = TRUE))
}
return(length(boxes))
}
box_buyer(c(1, 2, 3, 4), c(1/4, 1/4, 1/4, 1/4))
Я ожидаю функцию, которая возвращает количество купленных коробок.В настоящее время я получаю бесконечный цикл, который выдает ошибку: "the condition has length > 1 and only the first element will be used"
повторяется до тех пор, пока я не завершу R
.
Как я могу получить цикл для сэмплирования, пока не будет получена хотя бы одна из каждой игрушки, а затем остановленаи вернуть количество купленных коробок?Любая помощь приветствуется.