This module contains a 32 bit Xorshift random generator. Use this if you
need a 32 bit random generator, usually `Xorshift`

itself is a good choice
for your platform. This generator has a period of 2^32-1 bits if
initialized with a value different from 0.

- newtype Xorshift32 = Xorshift32 Int32
- newXorshift32 :: IO Xorshift32
- makeXorshift32 :: Integral a => a -> Xorshift32
- getInt32 :: Xorshift32 -> Int32

# Documentation

newtype Xorshift32 Source

Xorshift generator with 32 bits. This Xorshift generator uses first a left shift, then a right shift and again a left shift. It uses the parameters 13, 17 and 5. See the paper for more details on how the parameters affect the generation of random numbers.

The generator has a periode of 2^32-1, please notice that the generator has to be initialized with a value different from 0, elseway all future values will be zero as well.

Please notice, that the function `split`

is not implemented and will result
in a runtime error.

newXorshift32 :: IO Xorshift32Source

Generates a new Xorshift32 from the current time.

makeXorshift32 :: Integral a => a -> Xorshift32Source

Generate a new `Xorshift32`

generator. This is essentially a wrapper around
the constructor.

getInt32 :: Xorshift32 -> Int32Source

Get the raw contents of the random generator. This function is preferable over direct usage of the constructor itself, as the internal representation of the random generator may change in future releases.