计算 R 中多个骰子掷出的 6 的数量

Count the Number of 6s Rolled on a Number of Dice in R

我正在尝试开发代码,告诉我在使用 1 到 20 个骰子的情况下至少滚动 6 个的可能性。我专门尝试构建一段循环解决问题 space 的代码。生成此信息。这个问题让我一头雾水

我已经尝试使用示例函数并查看了列联表。

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)

以上提供了一个概率的基础,但不是两个骰子的联合概率。

最终代码应该能够告诉我 1 骰、2 骰、3 骰、一直到 20 骰的概率。

如果我没听错的话,你有 20 个骰子,你想知道其中至少有 6 个出现的概率。

我们可以写一个函数来掷一个骰子

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

然后编写另一个函数,掷 20 个骰子并检查其中是否至少有一个 6

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 

模拟使用 1 到 20 个骰子掷出至少一个 6 的概率的一种方法是使用 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