我有不同数量的骰子和骰子类型(例如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%。
我正在寻找一种以某种方式在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):Calculate the number of ways to roll a certain number