Rand is:exact
A random monad parameterized by the type
g of the generator
to carry.
The
return function leaves the generator unchanged, while
>>= uses the final generator of the first computation as
the initial generator of the second.
The GRand struct is an opaque data structure. It should only be
accessed through the g_rand_* functions.
Memory-managed wrapper type.