Random number generator for QMC



 Dave Young writes:
 >Hello,
 >
 >        I am starting to do Quantum Monte Carlo calculations and
 >I am interested in the performance of random number generators.
 >
 >        There have been a number of tests developed, the most trusted
 >seem to be those in "Seminumerical Algorithms" by Knuth.  And
 there
 >are a number of supplemental random number generators, such as the
 >ran3 generator in "Numerical Recipies".  It has also been
 demonstrated
 >that in the past the random number generators built into various
 >programming languages were not to be trusted.
 >
 >        My question is - Do the random number generators built into
 >the current generation of compilers pass statistical tests?
 >
 >        I have tested the built in random number generators in
 >Borland C++ and GNU C++ and so far they have passed all tests
 >(working out of Knuth).  I would like to know if it is only C++ that
 >has a reliable random number generator implemented or if all
 >compilers are now reliable, or if it is only certain vendors even within
 >the C++ language?
 >
 >        The reason that I would like to use built in random number
 >generators is that Knuth indicates that code written directly in
 >assembly language can accomplish the task faster than code written in
 >standard source code.  The GNU C++ built in random number generator
 >is a factor of 2 faster than the ran3 generator using all available
 >compiler optimization.
 >
 >
 >                                Dave Young
 >                                young - at - slater.cem.msu.edu
 >                                youngdc - at - msucem
 >
 For QMC calculations the "quality" of pseudo-random numbers depends on
 the
 algorithm used. Most modern Fortran- or C-library pseudo-random number
 generators are good enough, particularly if you are doing branching
 in which you are using a random number of pseudo-random numbers.
 Also you must consider how to create Gaussian distributed random
 numbers if your algorithm calls for them. I have seen presentations
 where the overall cycle length of the underlying pseudo-random number
 generator is quite noticeable due to creating Gaussian numbers by
 adding 12 uniformly distributed numbers.
 So, in general use a pseudo-random number generator with a long
 cycle length and use Box-Muller if you want Gaussian pseudo-random numbers.
 -Brian
 ========================================================================
 Brian L. Hammond                 _/_/_/_/    _/_/_/    _/_/_/_/_/
 Computational Research Div.     _/        _/      _/      _/
 Fujitsu America, Inc.          _/_/_/    _/_/_/_/_/      _/
 3055 Orchard Drive            _/        _/      _/      _/
 San Jose, CA  95134          _/        _/      _/  _/_/_/_/_/
 Tel: (408) 456-7322
 Email: brianh - at - fai.com