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.