Which java-library computes the cumulative standard normal distribution function?

[亡魂溺海] 提交于 2019-11-28 23:52:21
Yuval Adam

Apache Commons - Math has what you are looking for.

More specifically, check out the NormalDistribution class.

If you want the exact code, this one seems to be the same function used in OpenOffice Calc (I've made some changes for it to work in java):

// returns the cumulative normal distribution function (CNDF)
// for a standard normal: N(0,1)
double CNDF(double x)
{
    int neg = (x < 0d) ? 1 : 0;
    if ( neg == 1) 
        x *= -1d;

    double k = (1d / ( 1d + 0.2316419 * x));
    double y = (((( 1.330274429 * k - 1.821255978) * k + 1.781477937) *
                   k - 0.356563782) * k + 0.319381530) * k;
    y = 1.0 - 0.398942280401 * Math.exp(-0.5 * x * x) * y;

    return (1d - neg) * y + neg * (1d - y);
}

Found it here: http://www.codeproject.com/Messages/2622967/Re-NORMSDIST-function.aspx

A co-worker suggested colt, as he used it before. This function has exactly the result as the example in the reference document.

SuanShu, a Java numerical analysis library, computes the normal distribution and many other statistical distributions.

You could use the power series formula, which only takes up about 10 lines of code... see for example http://introcs.cs.princeton.edu/java/22library/Gaussian.java.html (the function Phi)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!