哪个Java库计算累积标准正态分布函数?

10

我有一个需要实现的规范,其中包含一些公式。这些公式中存在一个累积标准正态分布函数,它接受一个浮点数并输出一个概率值。该函数用Φ符号表示。是否存在一个Java库来计算此函数?

5个回答

14

8

如果您需要精确的代码,这个函数似乎是在OpenOffice Calc中使用的相同函数(我已经做了一些更改使其能在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);
}

在这里找到了: http://www.codeproject.com/Messages/2622967/Re-NORMSDIST-function.aspx

问题要求正态分布的概率密度函数(PDF)! - langerra.com
我不这么认为。问题的标题和文本都说“累积标准正态分布函数”...除非Φ表示它应该是概率密度函数... - Erk

3

一位同事建议使用 colt,因为他之前用过。这个函数的结果与参考文档中的示例完全相同。


2

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接