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