Domanda

Per un progetto ho una specifica con formule, devo implementare. In queste formule esiste una funzione di distribuzione normale standard cumulativa, che prende un float e genera una probabilità. La funzione è simboleggiata da un & # 934 ;. Esiste una libreria Java, che calcola questa funzione?

È stato utile?

Soluzione 3

Un collega ha suggerito colt , come lo aveva usato prima. Questa funzione ha esattamente il risultato come nell'esempio nel documento di riferimento.

Altri suggerimenti

Apache Commons - Math ha quello che stai cercando.

Più specificamente, controlla NormalDistribution classe.

Se vuoi il codice esatto, questo sembra essere la stessa funzione usata in OpenOffice Calc (ho apportato alcune modifiche affinché funzioni 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);
}

Trovato qui: http://www.codeproject.com/ messaggi / 2622967 / Re-NORMSDIST-function.aspx

SuanShu, una libreria di analisi numerica Java , calcola la distribuzione normale e molte altre distribuzioni statistiche.

È possibile utilizzare la formula delle serie di potenze, che occupa solo circa 10 righe di codice ... vedere ad esempio http://introcs.cs.princeton.edu/java/22library/Gaussian.java.html (la funzione Phi )

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top