The mwc-random package

[ Tags: bsd3, library, math, statistics ] [ Propose Tags ]

This package contains code for generating high quality random numbers that follow either a uniform or normal distribution. The generated numbers are suitable for use in statistical applications.

The uniform PRNG uses Marsaglia's MWC256 (also known as MWC8222) multiply-with-carry generator, which has a period of 2^8222 and fares well in tests of randomness. It is also extremely fast, between 2 and 3 times faster than the Mersenne Twister.

Compared to the mersenne-random package, this package has a more convenient API, is faster, and supports more statistical distributions.

[Skip to Readme]


Versions 0.4.1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
Dependencies base (<5), primitive, time, vector (>=0.5) [details]
License BSD3
Copyright 2009, 2010 Bryan O'Sullivan
Author Bryan O'Sullivan <>
Maintainer Bryan O'Sullivan <>
Category Math, Statistics
Home page
Bug tracker
Source repository head: hg clone
Uploaded Tue Feb 1 05:05:42 UTC 2011 by BryanOSullivan
Distributions Arch:, Debian:, Fedora:, FreeBSD:, LTSHaskell:, NixOS:, Stackage:, Tumbleweed:
Downloads 80340 total (841 in the last 30 days)
Rating 0.0 (0 ratings) [clear rating]
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]
Hackage Matrix CI




Maintainer's Corner

For package maintainers and hackage trustees

Readme for mwc-random-

[back to package description]

Efficient, general purpose pseudo-random number generation

This package provides the System.Random.MWC module, a Haskell library for generating high-quality pseudo-random numbers in a space- and time-efficient way.


This library has been carefully optimised for high performance. To obtain the best runtime efficiency, it is imperative to compile libraries and applications that use this library using a high level of optimisation.

Suggested GHC options:

-O -fvia-C -funbox-strict-fields

To illustrate, here are the times (in seconds) to generate and sum 250 million random Word32 values, on a laptop with a 2.4GHz Core2 Duo P8600 processor, running Fedora 11 and GHC 6.10.3:

no flags   200+
-O           1.249
-O -fvia-C   0.991

As the numbers above suggest, compiling without optimisation will yield unacceptable performance.

Get involved!

Please report bugs via the bitbucket issue tracker.

Master Mercurial repository:

  • hg clone

There's also a git mirror:

  • git clone git://

(You can create and contribute changes using either Mercurial or git.)


This library is written and maintained by Bryan O'Sullivan,