计算在R中的多个骰子上滚动的6s数量

问题描述 投票:1回答:2

我正在尝试开发代码,该代码将告诉我在给定1到20的模具使用率下,至少滚动六分之一的可能性。我专门尝试构建一条循环遍历问题空间的代码。生成此信息。这个问题使我不知所措。

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

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个模具上滚动6个模具的可能性。

r probability dice
2个回答
2
投票

模拟使用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

0
投票

如果我对您的理解正确,您有20个骰子,并且您想知道其中至少发生6个骰子的可能性。

我们可以编写一个掷骰子的功能

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 
© www.soinside.com 2019 - 2024. All rights reserved.