The AC-Random package

This is a psuedo-random number generator (PRNG). It is designed to
replace the standard Haskell '98 PRNG from the random package. It
has the following properties:

Nicer API than random. (Supports all sizes of Int and
Word, for example.)

Much faster than random. (In my tests, roughly 14x faster.)

Comparable quality to random. (Both libraries pass the "Die
Harder" suite of statistical randomness tests. In other words,
neither has any overly obvious pattern to the "random" numbers
it produces. Both libraries pass Die Harder with similar scores.)

The actual algorithm is a lag-4 Multiply With Carry (MWC)
generator, using 32-bit arithmetic. (Should be fast on 32-bit and
64-bit platforms.) If my algebra is correct, its period should be
roughly 1.46 * 10^48. (By constrast, random claims to have a
period of only 2.30 * 10^18.)