Numbers with a Gaussian distribution
| This page contains computer source code. If you intend to compile and use this code you must check for yourself the validity of the code. Please read the SklogWiki disclaimer. |
Random number generators usually provide numbers having a uniform (flat) distribution. However, sometimes it is desirable to generate numbers with some other distributions. For example, the Gaussian (normal) distribution is of paramount importance.
Fortran 90 implementation[edit]
This Fortran 90 function is adapted from Ref. 1, based on an algorithm from the Numerical Recipes collection (Ref. 2). The function ran() calls a random number generator:
! Returns random numbers distributed following a Gaussian with
! unit variance
function gauss()
implicit none
real gauss
real v1,v2,r
real ranmar
do
v1=2.0*ranmar()-1.0
v2=2.0*ranmar()-1.0
r=v1*v1+v2*v2
if(r.lt.1.0) exit
enddo
gauss=v1*sqrt(-2.0*log(r)/r)
return
end function gauss
References[edit]
- Daan Frenkel and Berend Smit "Understanding Molecular Simulation: From Algorithms to Applications" p. 411 Academic Press (1996)
- Numerical Recipes (Third Edition) website