Я новичок в Java. Я знаю, что Java имеет функцию генератора случайных чисел из Гауссова Распределения. Как я уже говорил из другого вопроса, встроенный случайный генератор Java не так хорош, потому что он не принимает входное среднее и стандартное отклонение Гауссового распределения, которое мне больше всего нужно. Я работаю над генетическим алгоритмом. Для мутации я должен генерировать случайное число из распределения Гаусса, распределения Коши и распределения Леви. Функция генератора должна принимать вход Scale Parameter и Location Parameter этого распределения. Как я могу это сделать?Генерация случайных чисел от Cauchy
ответ
Java не имеет встроенных. Вам нужно будет сделать свои собственные функции или найти стороннюю библиотеку.
CauchyDistribution из пакета org.apache.commons.math3.distribution похоже на то, что вы хотите.
В Java нет такого встроенного материала.
Если вы возражаете против раздувания jarfile из этого пакета, вам придется сворачивать свой собственный, похожий на this example for Gaussian.
Eventhough вопрос является своим родом старым, я постараюсь ответить, как я искал то же самое, и это может помочь следующему человеку:
Для реализации ГСЧ для произвольного распределения вы должны знать следующее :
- Генерация равномерно распределенных чисел в диапазоне [0,1) не является проблемой
- вывод из distributionfunction является плотность распределения (например, гауссова Белл Кривая)
- distributionfunctio n является (более или менее) 0 на -Infinity и 1 на бесконечности. Между этими крайностями он монотонно возрастает.
Теперь вы должны использовать эти вещи (по крайней мере, 1 и 3) следующим образом:
- Вычислить функцию распределения (интегрированием плотности)
- Решить это уравнение для х
- В полученной функции передайте равномерно распределенное число в качестве параметра для получения соответствующих распределенных результатов.
Пример:
Коши Распределение:
Р (х) = 1/(х ² + 1)/Pi
- Функция распределения:
у = F (x) = arctan (x)/Pi + 0,5 (необходимо добавить 0,5 для получения функции R -> [0,1]
- Решите для й
х = О (у) = тангенс (у-0.5) * Pi (G является обратным к F - обычно F^(- 1)
Теперь просто положить сгенерированный удваиваются как у в функции:
возвратного Math.tan (rand.nextDouble() -0,5) * math.pi;
для шкалы и местоположение параметра вы только должны сделать следующее:
X ваш Gaussian (значение: N (0,1)), распределенных стохастическая переменная.
Mean (а * Х + Ь) = а * среднее (X) + б Var (а * X + B) = a² * Var (X)
а является ваш параметр масштаба, а ваше местоположение параметр. Поэтому создайте стандартную гауссову распределенную переменную и умножьте ее на sqrt (масштаб) и добавьте параметр location.
- 1. Генерация случайных чисел
- 2. Генерация случайных чисел биномиальных чисел
- 3. Генерация случайных чисел Php
- 4. Spark - Генерация случайных чисел
- 5. Генерация параллельных случайных чисел
- 6. Генерация случайных чисел
- 7. Генерация случайных чисел Omnet ++
- 8. Генерация случайных чисел ATMega
- 9. Генерация случайных чисел Lua
- 10. Генерация геометрических случайных чисел
- 11. Генерация случайных чисел Haskell
- 12. Генерация случайных чисел android
- 13. Генерация кода случайных чисел
- 14. Генерация случайных чисел
- 15. Генерация случайных чисел
- 16. Генерация случайных чисел
- 17. Генерация случайных чисел F #
- 18. Генерация случайных чисел Java
- 19. Генерация больших случайных чисел
- 20. Генерация случайных чисел от 1-100
- 21. Генерация случайных чисел от 1 до 7
- 22. Генерация случайных чисел в зависимости от времени
- 23. Генерация случайных чисел Visual Basic
- 24. Генерация случайных чисел в C
- 25. Генерация случайных чисел 1-100
- 26. Java - генерация случайных кластеров чисел
- 27. Генерация случайных чисел с весом
- 28. Генерация случайных чисел без дубликатов
- 29. Генерация случайных чисел в R
- 30. Генерация случайных чисел общего назначения