组合数数谜题:掷 20 个 8 面骰子,得到至少 5 个相同值的骰子的概率是多少

Eth*_*man 3 python puzzle combinatorics discrete-mathematics dice

假设有一个游戏,其中一个人掷出 20 个 8 面的骰子,总共有 8^20 个可能的结果。为了计算特定事件发生的概率,我们将事件发生的方式数除以 8^20。

一个人可以计算得到值 3 的 5 个骰子的方法数。(20 选择 5)给了我们 3 的订单数。7^15 给了我们在 15 次掷骰时不能得到值 3 的方法数.

number of ways to get exactly 5, 3's = (20 choose 5)*7^15.
Run Code Online (Sandbox Code Playgroud)

答案也可以看成我可以用多少种方式重新排列字符串 3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0 ,0,0(20 选择 5)乘以零的值总数(假设有 7 个合法值)7^15(是否正确)。

  • 问题 1:如何计算获得 5 个相同值的骰子的方法数(即对于所有骰子值)。注意:如果我只是天真地使用上面的第一个答案并乘以 bt 8,我会得到大量的重复计算吗?

    我知道我可以解决每种情况 (5 1's), (5, 2's), (5, 3's), ... (5's, 8) 对它们求和(更简单的是 8*(5 1's) )。然后减去重叠数的总和 (5 1's) 和 (5 2's), (5 1's) and (5 3's)... (5 1's) and (5, 2's) and ... and (5, 8's)但这似乎非常混乱。我会以一种扩展到大量样本和大量类的方式对此进行概括。

  • 如何计算获得至少5 个相同值的骰子的方法数?

    所以111110000000000000000或11110100000000000002或11111100000001110000或11011211222222223333,但不00001111222233334444或000511512252363347744。

我正在寻找可以解释数学或指向支持此功能的库(尤其是 python 模块)的答案。额外的细节和例子。

Dav*_*cke 5

我建议您花一点时间编写蒙特卡罗模拟,并在您手动计算数学时让它运行。希望 Monte Carlo 模拟能够在您完成数学运算之前收敛,并且您将能够检查您的解决方案。

稍微快一点的选项可能涉及为数学问题创建 SO 克隆。