python - Combinatorics Counting Puzzle : Roll 20, 8面骰子,得到至少5个相同值的骰子的概率是多少

标签 python puzzle combinatorics discrete-mathematics dice

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

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

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

答案也可以看作是我可以用多少种方式重新排列字符串 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)和(5个3's)...(5个1's)和(5, 2's)和...和(5, 8's)但这似乎非常困惑。我会以一种扩展到大量样本和大量类的方式对此进行概括。

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

    所以 111110000000000000000 或 11110100000000000002 或 1111100000001110000 或 11011211222222223333,但不是 00001111222233334444 或 003452134li><0025p7134li><

我正在寻找解释数学或指向支持它的库(esp python 模块)的答案。细节和示例加分。

最佳答案

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

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

关于python - Combinatorics Counting Puzzle : Roll 20, 8面骰子,得到至少5个相同值的骰子的概率是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1202343/

相关文章:

python - NLTK 停用词可用语言

algorithm - 分为两组的硬币零钱

java - 用 C 和 Java 解决数字难题

algorithm - 安排n个人给定的出行时间

用 3 个常数计算可能性的算法?

r - 遍历数据框中所有可能的列和行组合

python - 如何设置 Atom 的脚本来运行 Python 3.x 脚本?与 Windows 7 Pro x64 的组合可能是问题所在吗?

python - 计算字母出现次数 Python

python 3 : Calculating complex exponents and logarithms

ruby - 为什么这段代码没有达到我的预期