2012-01-05 2 views
1

Я новичок в Java. Я знаю, что Java имеет функцию генератора случайных чисел из Гауссова Распределения. Как я уже говорил из другого вопроса, встроенный случайный генератор Java не так хорош, потому что он не принимает входное среднее и стандартное отклонение Гауссового распределения, которое мне больше всего нужно. Я работаю над генетическим алгоритмом. Для мутации я должен генерировать случайное число из распределения Гаусса, распределения Коши и распределения Леви. Функция генератора должна принимать вход Scale Parameter и Location Parameter этого распределения. Как я могу это сделать?Генерация случайных чисел от Cauchy

ответ

0

Java не имеет встроенных. Вам нужно будет сделать свои собственные функции или найти стороннюю библиотеку.

0

Eventhough вопрос является своим родом старым, я постараюсь ответить, как я искал то же самое, и это может помочь следующему человеку:

Для реализации ГСЧ для произвольного распределения вы должны знать следующее :

  1. Генерация равномерно распределенных чисел в диапазоне [0,1) не является проблемой
  2. вывод из distributionfunction является плотность распределения (например, гауссова Белл Кривая)
  3. distributionfunctio n является (более или менее) 0 на -Infinity и 1 на бесконечности. Между этими крайностями он монотонно возрастает.

Теперь вы должны использовать эти вещи (по крайней мере, 1 и 3) следующим образом:

  1. Вычислить функцию распределения (интегрированием плотности)
  2. Решить это уравнение для х
  3. В полученной функции передайте равномерно распределенное число в качестве параметра для получения соответствующих распределенных результатов.

Пример:

Коши Распределение:

Р (х) = 1/(х ² + 1)/Pi

  1. Функция распределения:

у = F (x) = arctan (x)/Pi + 0,5 (необходимо добавить 0,5 для получения функции R -> [0,1]

  1. Решите для й

х = О (у) = тангенс (у-0.5) * Pi (G является обратным к F - обычно F^(- 1)

  1. Теперь просто положить сгенерированный удваиваются как у в функции:

    возвратного Math.tan (rand.nextDouble() -0,5) * math.pi;

для шкалы и местоположение параметра вы только должны сделать следующее:

X ваш Gaussian (значение: N (0,1)), распределенных стохастическая переменная.

Mean (а * Х + Ь) = а * среднее (X) + б Var (а * X + B) = a² * Var (X)

а является ваш параметр масштаба, а ваше местоположение параметр. Поэтому создайте стандартную гауссову распределенную переменную и умножьте ее на sqrt (масштаб) и добавьте параметр location.

Смежные вопросы