- Home
  - Contact
  - Impressum

About us
About this Page

This page is maintained by Peter Hellekalek.

On this page, you will find links to free software for random number generation and testing, for Monte Carlo and quasi-Monte Carlo applications and for cryptography.

Further information on RNGs is available on our Generators and on our Links/Cryptographic Random Numbers pages.
For statistical tests, we would like to point to our Tests page.


Personal Recommendation In my opinion, the state of the art is like this:
  • If you need splitting facilities for your generator, for example in parallel simulation, then use the RNG by L'Ecuyer et al. (2002; see below),
  • if you do not need these splitting facilities, then use the excellent RNGs of Matsumoto et al. (see TT800 and Mersenne Twister below), or the Well-generators (see Panneton, P. L'Ecuyer, and M. Matsumoto, ``Improved Long-Period Generators Based on Linear Recurrences Modulo 2'', ACM Transactions on Mathematical Software, 32, 1 (2006), 1-16, or one of Li-Yuan Deng's huge RNGs.
  • if you need to employ an efficient nonlinear RNG, then use AES in counter mode (see my joint paper with Wegenkittl below) or some good stream cipher (see below),
  • if you need to test (hardware or software) RNGs, then use the TESTU01 battery of Pierre L'Ecuyer and Richard Simard (Montreal University, Canada) and, finally,
  • if you need nonuniform random variates, turn to the ANURAN-UNURAN package of Leydold et al. referenced below (google also for "ARVAG" - Automatic Nonuniform Random Variate Generation).
For all those references, there is code available from the authors.
Please note that this is a highly personal choice and that there are other good generators around. I have tried to select those algorithms or packages which come with strong theoretical support and which are state of the art.
Nonlinear RNGs from Cryptography As for cryptographic random number generators, we would like to point the reader to the eSTREAM project for code and cryptanalysis of various stream ciphers, and to AES as a random number generator.
All those RNGs are nonlinear and trimmed for efficiency.
AES as a Random Number Generator There are the fast and reliable RNGs of Matsumoto (TT800 and Mersenne Twister), there are the equally fast and reliable RNGs of L'Ecuyer et al., but there has been no nonlinear RNG available that has both a huge period length and is numerically efficient at the same time. This situation has changed: simply use AES in counter mode. There is numerical evidence available that this is a good RNG: pLab members Stefan Wegenkittl and Peter Hellekalek have tested AES, the advanced encryption standard, in random generator modes. The results were convincing, the paper is available online from our ftp server. This paper also contains a discussion of Maurer's Universal Statistical Test.
RNG Code with Splitting If you want to generate random numbers in parallel or need several streams of random numbers at once: read the P. L'Ecuyer, R. Simard, E. J. Chen, and W. D. Kelton, ``An Objected-Oriented Random-Number Package with Many Long Streams and Substreams'', Operations Research, 50, 6 (2002), 1073--1075. The code in C, C++, Java, and FORTRAN: is available from L'Ecuyer's webpage (see his list of publications).
Spectral Test Server Our Spectral Test Server is available. The spectral test is the most powerful practical figure of merit for linear types of random number generators. It allows to check for correlations between random numbers in the output stream of a random number generator, provided that the generation is done with an appropriate (linear) algorithm.
AES Implementation in C++
pLab member Gerhard Wesp has implemented Rijndael, in other words, the Advanced Encryption Standard AES, in C++. The implementation is available via the Rijndael home page
Otmar Lendl's package for LCGs, ICGs, EICGs, and other RNGs
pLab member Otmar Lendl has created portable, high-performance ANSI-C implementations of linear congruential, inversive congruential, and explicit inversive congruential random number generators (called LCG, ICG and EICG, respectively). The source-code is available in tar-ed or zip-ed format.
Makoto Matsumoto's Huge RNGs
Extremely fast and reliable RNGs are available from Makoto Matsumoto, see TT800 and the Mersenne Twister (MT). Many specialists in the field of random number generation consider MT as one of the current champions, i.e. one of the best RNGs available for stochastic simulation.
Nonuniform Random Numbers
Josef Leydold and Wolfgang Hoermann of the University of Economics Vienna have written a library of functions to generate non-uniform random numbers called UNURAN. Together with the uniform RNGs discussed above, a practitioner will be able to work with state-of-the-art algorithms.
Nonuniform Random Numbers with Lipschitz densities
Gleb Beliakov offers RanLip, a universal nonuniform random variate generator for Lipschitz-continous densities. RanLip generates random variates with an arbitrary mutlivariate Lipschitz density. Downloads are available for Unix/Linux and Windows.
Statistical Tests
There are two established test batteries, the famous DIEHARD battery of George Marsaglia, and the NIST battery of the National Institute of Standards and Technology.
More Software
More links to software are available on our Random Numbers and Monte Carlo Methods page, which is part of the WWW Virtual Library


back to the top


Research supported by FWF



Home | Contact | Impressum | About us | Generators | Links | Literature | Software | Tests