const SQRT_2PI = Math.sqrt(2 * Math.PI);
function cumulativeDistribution(z) {
let sum = z;
let tmp = z;
// 15次迭代足以达到4位数的精度
for (let i = 1; i < 15; i++) {
tmp *= (z * z) / (2 * i + 1);
sum += tmp;
}
return (
Math.round((0.5 + (sum / SQRT_2PI) * Math.exp((-z * z) / 2)) * 1e4) /
1e4
);
}
/**
* 标准正态分布表,也称为单位正态表或Z表,
* 是一个数学表,用于表示Φ(phi)的值,这些值是
* [累积分布函数](https://en.wikipedia.org/wiki/Normal_distribution#Cumulative_distribution_function)
* 的值。它用于查找统计量在标准正态分布下
* 低于、高于或介于某些值之间的概率,并由此扩展到任何正态分布。
*/
const standardNormalTable = [];
for (let z = 0; z <= 3.09; z += 0.01) {
standardNormalTable.push(cumulativeDistribution(z));
}
export default standardNormalTable;