Pregunta

Para un proyecto, tengo una especificación con fórmulas que debo implementar. En estas fórmulas existe una función de distribución normal estándar acumulativa, que toma un flotador y genera una probabilidad. La función está simbolizada por un & # 934 ;. Existe una biblioteca Java, que calcula esta función?

¿Fue útil?

Solución 3

Un compañero de trabajo sugirió potro , como lo usó antes. Esta función tiene exactamente el resultado como el ejemplo en el documento de referencia.

Otros consejos

Apache Commons - Math tiene lo que está buscando.

Más específicamente, consulte NormalDistribution class.

Si desea el código exacto, esta parece ser la misma función utilizada en OpenOffice Calc (he realizado algunos cambios para que funcione 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);
}

Lo encontré aquí: http://www.codeproject.com/ Messages / 2622967 / Re-NORMSDIST-function.aspx

SuanShu, una biblioteca de análisis numérico de Java , calcula la distribución normal y muchas otras distribuciones estadísticas.

Puede usar la fórmula de la serie de potencia, que solo ocupa unas 10 líneas de código ... vea, por ejemplo, http://introcs.cs.princeton.edu/java/22library/Gaussian.java.html (la función Phi )

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top