Pergunta

Para um projeto eu tenho uma especificação com fórmulas, eu tenho que implementar. Nestas fórmulas, existe uma função de distribuição normal padrão cumulativa, que leva um flutuador e emite uma probabilidade. A função é simbolizado por um F. Existe um Java-biblioteca, que calcula esta função?

Foi útil?

Solução 3

Um colega de trabalho sugeriu colt , como ele é usado antes. Este função tem exatamente o resultado como o exemplo no documento de referência.

Outras dicas

Apache Commons -. Math tem o que você está procurando

Mais especificamente, confira o NormalDistribution classe.

Se você deseja que o código exato, esta parece ser a mesma função utilizada em OpenOffice Calc (Eu fiz algumas mudanças para que ele funcione em 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);
}

encontrou aqui: http://www.codeproject.com/ mensagens / 2622967 / Re-NORMSDIST-function.aspx

SuanShu, um Java análise numérica biblioteca , calcula a distribuição normal e muitas outras distribuições estatísticas.

Você pode usar a fórmula série de potência, o que só ocupa cerca de 10 linhas de código ... ver, por exemplo http://introcs.cs.princeton.edu/java/22library/Gaussian.java.html (a função Phi)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top