Given a mutable reference to a RandomGen generator, we can make a
RandomSource usable in any monad in which the reference can be modified.
For example, if x :: TVar StdGen, getRandomByteFromRandomGenRef x can be
used as a RandomSource in IO, STM, or any monad which is an instance
of MonadIO. It's generally probably better to use
getRandomWordFromRandomGenRef though, as this one is likely to throw
away a lot of perfectly good entropy. Better still is to use these 3 functions
together to create a RandomSource instance for the reference you're using,
if one does not already exist.
|Similarly, getRandomWordFromRandomGenState x can be used in any "state"
monad in the mtl sense whose state is a RandomGen generator.
Additionally, the standard mtl state monads have MonadRandom instances
which do precisely that, allowing an easy conversion of RVars and
other Distribution instances to "pure" random variables.
|Produced by Haddock version 2.4.2|