Подсчитайте количество 6s, брошенных на количество костей в R - PullRequest
1 голос
/ 21 января 2020

Я пытаюсь разработать код, который сообщит мне вероятность использования по крайней мере одной шестерки при использовании от 1 до 20 д ie. Я специально пытаюсь создать один кусок кода, который проходит через проблемное пространство. генерирует эту информацию. Вопрос оставил меня в недоумении.

Я попытался использовать функцию выборки и просмотрел таблицы сопряженности.

die1 = sample(1:6,n,replace=T)
die2 = sample(1:6,n,replace=T)
sum_of_dice = die1 + die2
counts = table(sum_of_dice)
proba_empiric = counts/sum(counts)
barplot(proba_empiric)

Выше приведены основы для вероятности, но не для соединения вероятность двух d ie.

Финальный код должен подсказать мне вероятность того, что шестерка будет выпадать 1 d ie, 2 d ie, 3 d ie, вплоть до двадцати d ie.

Ответы [ 2 ]

2 голосов
/ 21 января 2020

Один из способов имитации вероятности броска хотя бы одного 6 с использованием 1 - 20 d ie - это использование rbinom():

sapply(1:20, function(x) mean(rbinom(10000, x, 1/6) > 0))

 [1] 0.1675 0.3008 0.4174 0.5176 0.5982 0.6700 0.7157 0.7704 0.8001 0.8345 0.8643 0.8916 0.9094 0.9220 0.9310
[16] 0.9471 0.9547 0.9623 0.9697 0.9718
0 голосов
/ 21 января 2020

Если я правильно вас понимаю, у вас есть 20 кубиков, и вы хотите знать вероятность того, что в них произойдет хотя бы одна шестерка.

Мы можем написать функцию для броска одного d ie

roll_die <- function() sample(6, 1)

Затем написать другую функцию, которая бросает 20 кубиков и проверяет, есть ли в ней хотя бы одна шестерка

roll_20_die <- function() {
   any(replicate(20, roll_die()) == 6)
}

и replicate эта функция достаточное количество раз, чтобы получить отношение вероятностей

n <- 10000
table(replicate(n, roll_20_die()))/n

# FALSE   TRUE 
#0.0244 0.9756 
...