views:

391

answers:

2

I need to generate random numbers that have a beta distribution in some speed critical code. Currently I'm using the BetaRandomVariable() class from the numerics4j library - but currently represents about 95% of my code's CPU usage!

Can anyone recommend a faster way to generate these random numbers?

+2  A: 

You can look at the NumPy random number generators. They're in C, but the code is relatively readable and permissively licensed, so they can easily be ported to Java. You don't need to port the basic Mersenne Twister generator as Java has one in its standard library, only the code that takes numbers form the Mersenne Twister and converts it to a beta distribution. I've ported most of the NumPy random number generators to D and found them to be very efficient, and you'll probably find the same in Java.

dsimcha
+2  A: 

A faster Java implementation of the Mersenne Twister algorithm which I have found useful in a number of applications is available from here: http://www.cs.gmu.edu/~sean/research/

Tom Castle