Задача для меня - использовать Java для получения квантиля распределения Пуассона (целое число).
Поскольку я новичок в Java, я много гуглял и писал какой-то код, не уверен, что это правильно или нет, может кто-нибудь помочь мне в этом?
Согласно pdf-функции распределения Пуассона Распределение Пуассона
(pr = k) = pow ((лямбда), k) * pow (e, (-lambda)) / k!
Где k - число случаев, а лямбда - среднее значение распределения (ожидаемое количество случаев).
Мой код:
// quantile function calculate pdf for each i, sum it until it hits probability threshold pr; finally output i as distribution quantile; it calls the second function which aims to obtain i!;
private int quantile(double pr, double mean){
int n = (long) 3 * mean;
double prev = 0;
for (int i = 0; i < n; i++) {
double curr = math.pow(mean, i) * math.exp(-mean) / factorialLoop(i);
prev = curr;
curr = prev + curr;
if (curr < pr) {
continue;
}
else {
break;
}
}
return i;
}
// The following function will return result for i!;
private static long factorialLoop(int n) {
if (n < 0) {
return -1;
}
if (n == 0) {
return 1;
}
long result = 1;
for (int i = n; i > 0; i--) {
result *= i;
}
return result;
}
Будет ли код возвращать i (выход квантиля для распределения Пуассона)?
Спасибо!