Pregunta

necesito para generar números aleatorios que tienen una distribución beta en algún código de velocidad crítica. Actualmente estoy usando la clase BetaRandomVariable () de la biblioteca numerics4j - pero en la actualidad representa alrededor del 95% del uso de la CPU de mi código

¿Alguien puede recomendar una manera más rápida para generar estos números aleatorios?

¿Fue útil?

Solución

Puede mirar a los generadores de números aleatorios NumPy . Están en C, pero el código es relativamente fácil de leer y permisiva con licencia, para que puedan ser fácilmente portado a Java. No es necesario portar el generador básico Mersenne Twister como Java tiene uno en su biblioteca estándar, sólo el código que lleva números forman el Mersenne Twister y la convierte en una distribución beta. Me he portado la mayor parte de los generadores de números aleatorios NumPy a D y parecieron ser muy eficiente, y probablemente encontrará la misma en Java.

Otros consejos

Una aplicación Java más rápido del algoritmo Mersenne Twister que he encontrado útil en una serie de aplicaciones está disponible desde aquí: http://www.cs.gmu.edu/~sean/research/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top