首页 > 解决方案 > 使用多个骰子时计算给定骰子掷骰的机会

问题描述

我有可变数量的骰子和骰子类型(例如 4 面、6 面等),但骰子类型从不混合。我需要使用骰子和边的任何变化来计算某个结果的概率。例如,给定 3 个六面骰子(我们将其写为 3d6),掷出 3 的概率为 0.46% (100 / 6^3 = 0.46)。

概率=期望结果的数量÷可能结果的数量

对此的应用是骰子公式可以具有修饰符,例如。3d6-5,我想计算结果为零或更低的机会。

因此,我想通过将 的百分比相加来总结总机会。示例(使用 anydice.com),对于(3d6)-5,我将添加 3 (0.46%)、4 (1.39%)、5 (2.78%) 的掷骰机会,得出的结论是滚动等于或小于 0 的几率为 4.63%。

Anydice.com

我正在寻找一种在Javascript中以某种方式执行此操作的有效方法。

编辑:订单很重要!一卷 6、1 和 2 与 1、2 和 6 不同。这不是一个组合问题,正如 Barmar 建议的 Medium 文章中所述。

编辑:评论要求(理所当然地)代码。由于我没有关于如何计算它的假设,因此我对此没有太多了解,但这就是我所拥有的:

function dieAvg(sides) {
    return ((sides+1)/2);
}

// dice = number of dice
// die = sides, eg. 6 for a square dice
// mod = a modifier, positive or negative to apply to the result
function getDiceStats(dice, die, mod) {

    let avg = (dieAvg(die)*dice) + mod;
    let min = dice + mod;
    let max = die*dice) + mod;
    let zeroChance = 0; // TODO!

    return [min,max,avg, zeroChance];
}

有点相关的问题(java):计算滚动某个数字的方式数

标签: javascriptstatistics

解决方案


推荐阅读