这是我的代码。此函数返回一个遵循标准正态分布的数字。
var rnorm = function() {
var n = 1000;
var x = 0;
var ss = 0;
for (var i = 0; i < n; i++) {
var a = Math.random();
x += a;
ss += Math.pow(a-0.5, 2);
}
var xbar = x/n;
var v = ss/n;
var sd = Math.sqrt(v);
return (xbar-0.5)/(sd/Math.sqrt(n));
};
它很简单并且利用了中心极限定理。这是一个jsfiddle运行这个东西100,000次并打印一些信息到控制台。
https://jsfiddle.net/qx61fqpn/
它看起来是正确的(我还没有编写代码来绘制直方图)。正确的比例出现在(-1,1),( - 2,2),( - 3,3)和更远之间。样本均值为0,var&amp; sd为1,偏斜为0,峰度为3。
但它有点慢。
我打算使用这个函数编写更复杂的函数作为构建块(如chi-sq分布)。
我的问题是:
如何重写此代码以提高其性能?我在说速度。现在,有人用一些JavaScript和统计知识知道我正在做什么(或者试图做什么 - 如果我做错了的话)。