2010-02-13 6 views
4

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

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

ответ

2

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

2

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