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

问题描述 投票:10回答:5

在一个项目中,我有一个包含公式的规范,我必须要实现。在这些公式中存在一个累积标准正态分布函数,它接收一个浮点数并输出一个概率。这个函数的符号是Φ。是否存在一个Java库,可以计算这个函数?

java statistics probability computation
5个回答
14
投票

Apache Commons - 数学 有你要找的东西。

更具体地说,请查看 NormalDistribution 类。


7
投票

如果你想知道确切的代码,这个似乎是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.comMessages2622967Re-NORMSDIST-function.aspx


3
投票

一位同事建议 小马,因为他以前用过。这个 功能 的结果和参考文档中的例子一模一样。


2
投票

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


1
投票

你可以使用幂级数公式,它只需要大约10行代码......参见例如 http:/introcs.cs.princeton.edujava22libraryGaussian.java.html。 (该功能 Phi)

© www.soinside.com 2019 - 2024. All rights reserved.