Нужен быстрый генератор случайных чисел для бета-версии Java

StackOverflow https://stackoverflow.com/questions/2255909

Вопрос

Мне нужно сгенерировать случайные числа, которые имеют бета-распределение в некотором коде, критичном к скорости.В настоящее время я использую класс BetaRandomVariable() из библиотеки numerics4j - но в настоящее время на него приходится около 95% загрузки процессора моим кодом!

Кто-нибудь может порекомендовать более быстрый способ генерации этих случайных чисел?

Это было полезно?

Решение

Вы можете посмотреть на Генераторы случайных чисел NumPy.Они написаны на C, но код относительно удобочитаемый и лицензированный, поэтому их можно легко портировать на Java.Вам не нужно переносить базовый генератор Mersenne Twister, поскольку Java имеет его в своей стандартной библиотеке, только код, который принимает числа, формирует Mersenne Twister и преобразует его в бета-дистрибутив.Я портировал большинство генераторов случайных чисел NumPy на D и обнаружил, что они очень эффективны, и вы, вероятно, найдете то же самое в Java.

Другие советы

Более быстрая Java-реализация алгоритма Mersenne Twister, который я нашел полезным в ряде приложений, доступна здесь: http://www.cs.gmu.edu /~шон/исследование/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top