我有这个公式:
f(x)=(x^0+x^0+x^1+x^101+x^2+x^202)^n
这基本上是掷 n 个骰子且面显示数值时的概率:
{0,0,1,101,2,202}
如何将其转换为 JavaScript?
我知道我可以使用递归函数来获取每个结果并将它们添加到结果数组中,但是超过 9 个骰子就会变得很长。
编辑:请注意 x 不是变量。这是一些奇特的数学符号,代表我忘记了概率。
最佳答案
您问题中的x是一个形式变量,您要求一个过程来计算该变量中形式多项式的幂。这是一个快速实现。警告:我还没有执行它,无论如何它都缺乏润色。但我希望你能明白。
function polynomial_unit() {
return [1]; // Represents 1 = 1x^0
}
function polynomial_mult(x, y) {
var z = Array.apply(null, new Array((x.length + y.length - 1))).map(Number.prototype.valueOf,0);
for(var i = 0; i < x.length; i++) {
for(var j = 0; j < y.length; j++) {
z[i+j] += x[i]*y[j];
}
}
return z;
}
function generic_exp(base, exponent, mult, unit) {
var t = unit;
while (exponent > 1) {
if (exponent%2 == 1) t = mult(t, base);
base = mult(base, base);
exponent = Math.floor(exponent/2);
}
return mult(t, base);
}
function Wildhorn(n) {
var f = Array.apply(null, new Array(203)).map(Number.prototype.valueOf,0);
f[0] = 2; f[1] = 1; f[2] = 1; f[101] = 1; f[202] = 1;
return generic_exp(f, n, polynomial_mult, polynomial_unit());
}
关于javascript - 将数学公式翻译为 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26125981/