Type: New Feature
Affects Version/s: 2.1
Fix Version/s: 2.2
Up to 2.1, we have few pseudo random number generators. We have an interface RandomGenerator implemented by three classes:
- JDKRandomGenerator that extends the JDK provided generator
- AbstractRandomGenerator as a helper for users generators
- BitStreamGenerator which in turn is extended only by MersenneTwister
The JDK provided generator is a simple one that can be used only for very simple needs. The Mersenne Twister is on the other hand a fast generator with good properties well suited for Monte-Carlo simulation. It is equidistributed for generating vectors up to dimension 623 and has a huge period: 219937 - 1.
Since Mersenne-Twister inception in 1997, some new generators have been created, retaining the good properties of Mersenne twister but removing some of its (few) drawbacks. The main one is that if initialized with a bits pool containing lots of zeroes, the pool will take a very long time time to stabilize with a roughly balanced number of zeros and ones.
I would like to add such generators (well, I already did but can withdraw my commit). The ones I want to add are the WELL generators (Well Equidistributed Long period Linear) created by François Panneton, Pierre L'Ecuyer and Makoto Matsumoto. They are described in their 2006 paper: Improved Long-Period Generators Based on Linear Recurrences Modulo 2, ransactions on Mathematical Software, 32, 1 (2006) which is available at http://www.iro.umontreal.ca/~lecuyer/myftp/papers/wellrng.pdf.