Нужен быстрый генератор случайных чисел для бета-версии Java
-
20-09-2019 - |
Вопрос
Мне нужно сгенерировать случайные числа, которые имеют бета-распределение в некотором коде, критичном к скорости.В настоящее время я использую класс BetaRandomVariable() из библиотеки numerics4j - но в настоящее время на него приходится около 95% загрузки процессора моим кодом!
Кто-нибудь может порекомендовать более быстрый способ генерации этих случайных чисел?
Решение
Вы можете посмотреть на Генераторы случайных чисел NumPy.Они написаны на C, но код относительно удобочитаемый и лицензированный, поэтому их можно легко портировать на Java.Вам не нужно переносить базовый генератор Mersenne Twister, поскольку Java имеет его в своей стандартной библиотеке, только код, который принимает числа, формирует Mersenne Twister и преобразует его в бета-дистрибутив.Я портировал большинство генераторов случайных чисел NumPy на D и обнаружил, что они очень эффективны, и вы, вероятно, найдете то же самое в Java.
Другие советы
Более быстрая Java-реализация алгоритма Mersenne Twister, который я нашел полезным в ряде приложений, доступна здесь: http://www.cs.gmu.edu /~шон/исследование/