Stability | experimental |
---|---|
Maintainer | Patrick Perry <patperry@stanford.edu> |
- data MC a
- runMC :: MC a -> RNG -> (a, RNG)
- evalMC :: MC a -> RNG -> a
- execMC :: MC a -> RNG -> RNG
- unsafeInterleaveMC :: MC a -> MC a
- data MCT m a
- runMCT :: Monad m => MCT m a -> RNG -> m (a, RNG)
- evalMCT :: Monad m => MCT m a -> RNG -> m a
- execMCT :: Monad m => MCT m a -> RNG -> m RNG
- liftMCT :: Monad m => MC a -> MCT m a
- unsafeInterleaveMCT :: Monad m => MCT m a -> MCT m a
- data RNG
- mt19937 :: Word64 -> RNG
- uniform :: Double -> Double -> MC Double
- uniformInt :: Int -> MC Int
- normal :: Double -> Double -> MC Double
- poisson :: Double -> MC Int
The Monte Carlo monad
A Monte Carlo monad with an internal random number generator.
runMC :: MC a -> RNG -> (a, RNG)Source
Run this Monte Carlo monad with the given initial random number generator, getting the result and the new random number generator.
evalMC :: MC a -> RNG -> aSource
Evaluate this Monte Carlo monad and throw away the final random number
generator. Very much like fst
composed with runMC
.
execMC :: MC a -> RNG -> RNGSource
Exicute this Monte Carlo monad and return the final random number
generator. Very much like snd
composed with runMC
.
unsafeInterleaveMC :: MC a -> MC aSource
Get the baton from the Monte Carlo monad without performing any computations. Useful but dangerous.
The Monte Carlo monad transformer
A parameterizable Monte Carlo monad for encapsulating an inner monad.
MonadTrans MCT | |
MonadReader r m => MonadReader r (MCT m) | |
MonadState s m => MonadState s (MCT m) | |
Monad m => MonadState RNG (MCT m) | |
MonadError e m => MonadError e (MCT m) | |
MonadWriter w m => MonadWriter w (MCT m) | |
Monad m => Monad (MCT m) | |
Monad m => Functor (MCT m) | |
MonadPlus m => MonadPlus (MCT m) | |
MonadCont m => MonadCont (MCT m) | |
MonadIO m => MonadIO (MCT m) |
liftMCT :: Monad m => MC a -> MCT m aSource
Take a Monte Carlo computations and lift it to an MCT computation.
unsafeInterleaveMCT :: Monad m => MCT m a -> MCT m aSource
Similar to unsafeInterleaveMC
.
Pure random number generator creation
data RNG
MonadState RNG MC | |
Monad m => MonadState RNG (MCT m) |
mt19937 :: Word64 -> RNGSource
Get a Mersenne Twister random number generator seeded with the given value.
Random distributions
uniform :: Double -> Double -> MC DoubleSource
uniform a b
generates a value uniformly distributed in [a,b)
.
uniformInt :: Int -> MC IntSource
uniformInt n
generates an integer uniformly in the range [0,n-1]
.
It is an error to call this function with a non-positive value.