| Safe Haskell | None |
|---|
Data.Random.Source.StdGen
Description
This module provides functions useful for implementing new MonadRandom
and RandomSource instances for state-abstractions containing StdGen
values (the pure pseudorandom generator provided by the System.Random
module in the "random" package), as well as instances for some common
cases.
Documentation
data StdGen
Instances
| Read StdGen | |
| Show StdGen | |
| RandomGen StdGen | |
| (Monad m, ModifyRef (IORef StdGen) m StdGen) => RandomSource m (IORef StdGen) | |
| (Monad m, ModifyRef (STRef s StdGen) m StdGen) => RandomSource m (STRef s StdGen) | |
| (Monad m1, ModifyRef (Ref m2 StdGen) m1 StdGen) => RandomSource m1 (Ref m2 StdGen) | |
| Monad m => MonadRandom (StateT StdGen m) | |
| Monad m => MonadRandom (StateT StdGen m) |
getRandomPrimFromStdGenIO :: Prim a -> IO aSource
getRandomPrimFromRandomGenRef :: (Monad m, ModifyRef sr m g, RandomGen g) => sr -> Prim a -> m aSource
Given a mutable reference to a RandomGen generator, we can make a
RandomSource usable in any monad in which the reference can be modified.
See Data.Random.Source.PureMT.getRandomPrimFromMTRef for more detailed
usage hints - this function serves exactly the same purpose except for a
StdGen generator instead of a PureMT generator.
getRandomPrimFromRandomGenState :: forall g m a. (RandomGen g, MonadState g m) => Prim a -> m aSource
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.
Again, see Data.Random.Source.PureMT.getRandomPrimFromMTState for more
detailed usage hints - this function serves exactly the same purpose except
for a StdGen generator instead of a PureMT generator.