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.