10

对于一个项目,我有一个带有公式的规范,我必须实施。在这些公式中,存在累积标准正态分布函数,它采用浮点数并输出概率。该函数用 Φ 表示。是否存在计算此函数的 Java 库?

4

5 回答 5

14

Apache Commons - Math有你正在寻找的东西。

更具体地说,查看NormalDistribution课程。

于 2009-01-14T12:33:41.157 回答
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

于 2011-12-04T19:23:27.377 回答
3

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

于 2009-01-14T15:24:58.330 回答
2

SuanShu 是一个 Java 数值分析库,用于计算正态分布和许多其他统计分布。

于 2010-06-24T16:59:24.300 回答
1

您可以使用幂级数公式,它只占用大约 10 行代码......例如参见http://introcs.cs.princeton.edu/java/22library/Gaussian.java.html(函数Phi

于 2012-11-18T22:54:57.430 回答