Какая java-библиотека вычисляет накопительную стандартную функцию нормального распределения? - PullRequest
8 голосов
/ 14 января 2009

Для проекта у меня есть спецификация с формулами, которую я должен реализовать. В этих формулах существует кумулятивная стандартная функция нормального распределения, которая принимает значение с плавающей запятой и выдает вероятность. Функция обозначена символом Φ. Существует ли Java-библиотека, которая вычисляет эту функцию?

Ответы [ 5 ]

12 голосов
/ 14 января 2009

Apache Commons - Math имеет то, что вы ищете.

Более конкретно, проверьте класс NormalDistribution.

6 голосов
/ 04 декабря 2011

Если вам нужен точный код, эта функция, похоже, является той же самой функцией, которая использовалась в 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.com/Messages/2622967/Re-NORMSDIST-function.aspx

2 голосов
/ 24 июня 2010

SuanShu, библиотека численного анализа Java , вычисляет нормальное распределение и многие другие статистические распределения.

2 голосов
/ 14 января 2009

Сотрудник предложил кольт , как он использовал его раньше. Эта функция имеет именно такой результат, как пример в справочном документе.

0 голосов
/ 19 ноября 2012

Вы можете использовать формулу степенного ряда, которая занимает всего около 10 строк кода ... см. Например http://introcs.cs.princeton.edu/java/22library/Gaussian.java.html (функция Phi)

...