Мне нужно распределение Пуассона .
В настоящее время у меня есть следующий код:
public static int getPoisson(double lambda) {
double l = Math.exp(-lambda);
double p = 1.0;
int k = 0;
do {
k++;
p *= Math.random();
} while (p > l);
return k - 1;
}
Мне было интересно, как я мог бы изменить его так, чтобы я мог сгенерировать x количество значений в пределах определенного диапазона, т.е. если a = 5, b = 10 и lambda = 6, все сгенерированные значения будут находиться в диапазоне от 5 до 10.
Примечание. Я могу перегрузить метод и, таким образом, принять параметры диапазона и вызвать метод getPossion впетля;отбрасывая все, что не соответствует этому диапазону.Однако я хотел бы проверить, существуют ли математически определенные средства для достижения этого и / или подходит ли этот подход.
РЕДАКТИРОВАТЬ: Средства, с помощью которых я отбрасываю значения «вне границ»:
public static int getPoisson(final double min, final double max, final double lambda) {
int k = 0;
do {
k = getPoisson(lambda);
} while (k < min || k > max);
return k;
}