Question

Pour un projet, j'ai une spécification avec des formules, que je dois implémenter. Dans ces formules, il existe une fonction de distribution normale standard cumulative, qui prend un float et génère une probabilité. La fonction est symbolisée par un & # 934 ;. Existe une bibliothèque Java, qui calcule cette fonction?

Était-ce utile?

La solution 3

Un collègue de travail a suggéré de colt , comme il en utilisait auparavant. Cette fonction a exactement le résultat comme exemple dans le document de référence.

Autres conseils

Apache Commons - Mathématiques a ce que vous recherchez.

Plus précisément, consultez le NormalDistribution classe.

Si vous voulez le code exact, celui-ci semble être la même fonction utilisée dans OpenOffice Calc (j'ai apporté quelques modifications pour que cela fonctionne en 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);
}

Vous le trouverez ici: http://www.codeproject.com/ Messages / 2622967 / Re-NORMSDIST-function.aspx

SuanShu, une bibliothèque d'analyse numérique Java , calcule la distribution normale et de nombreuses autres distributions statistiques.

Vous pouvez utiliser la formule de la série power, qui ne prend qu'environ 10 lignes de code ... voir par exemple http://introcs.cs.princeton.edu/java/22library/Gaussian.java.html (la fonction Phi )

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top