[Haskell-cafe] ANNOUNCE: normaldistribution-1.0 – Minimum fuss normally distributed random values.

Bjorn Buckwalter bjorn.buckwalter at gmail.com
Sat Apr 9 09:21:41 CEST 2011

Dear all,

I'm pleased to announce the immediate availability of the
normaldistribution library on hackage:


This purpose of this library is to have a simple API and no
dependencies beyond Haskell 98 in order to let you produce normally
distributed random values with a minimum of fuss. This library does
not attempt to be blazingly fast nor to pass stringent tests of
randomness. It attempts to be very easy to install and use while being
"good enough" for many applications (simulations, games, etc.).  The
API builds upon and is largely analogous to that of the Haskell 98
Random module (more recently System.Random).


> (sample,g) = normal  myRandomGen  -- using a Random.RandomGen
> samples    = normals myRandomGen  -- infinite list
> samples2   = mkNormals 10831452   -- infinite list using a seed

In the IO monad:

> sample    <- normalIO
> samples   <- normalsIO  -- infinite list

With custom mean and standard deviation:

> (sample,g) = normal'    (mean,sigma) myRandomGen
> samples    = normals'   (mean,sigma) myRandomGen
> samples2   = mkNormals' (mean,sigma) 10831452

> sample    <- normalIO'  (mean,sigma)
> samples   <- normalsIO' (mean,sigma)

Internally the library uses the Central Limit Theorem to approximate
normally distributed values from multiple uniformly distributed random


More information about the Haskell-Cafe mailing list