Copyright | (c) 2010-2012 Aleksey Khudyakov |
---|---|
License | BSD3 |
Maintainer | [email protected] |
Stability | experimental |
Portability | portable |
Safe Haskell | None |
Language | Haskell98 |
System.Random.MWC.Monad
Description
This module provide monadic interface for mwc-random
package. It's just a thin wrapper and all work is done
mwc-random
.
- data Rand m a
- toRand :: MonadPrim m => (Gen (PrimState (BasePrimMonad m)) -> BasePrimMonad m a) -> Rand m a
- type RandIO a = Rand IO a
- asRandIO :: RandIO a -> RandIO a
- type RandST s a = Rand (ST s) a
- asRandST :: RandST s a -> RandST s a
- runRand :: Rand m a -> Gen (PrimState (BasePrimMonad m)) -> m a
- runWithCreate :: MonadPrim m => Rand m a -> m a
- runWithSeed :: MonadPrim m => Seed -> Rand m a -> m a
- runWithVector :: (Vector v Word32, MonadPrim m) => Rand m a -> v Word32 -> m a
- runWithSystemRandom :: (MonadPrim m, BasePrimMonad m ~ m) => Rand m a -> IO a
- runWithSystemRandomT :: (MonadPrim m, BasePrimMonad m ~ IO) => Rand m a -> m a
- uniform :: (MonadPrim m, Variate a) => Rand m a
- uniformR :: (MonadPrim m, Variate a) => (a, a) -> Rand m a
- data Seed :: *
- toSeed :: Vector v Word32 => v Word32 -> Seed
- fromSeed :: Seed -> Vector Word32
- save :: MonadPrim m => Rand m Seed
Random monad
Random monad for mwc-random package
Instances
MonadTrans Rand | |
Monad m => Monad (Rand m) | |
Monad m => Functor (Rand m) | |
Monad m => Applicative (Rand m) | |
MonadPrim m => MonadPrim (Rand m) | |
MonadIO m => MonadIO (Rand m) | |
type BasePrimMonad (Rand m) = BasePrimMonad m |
toRand :: MonadPrim m => (Gen (PrimState (BasePrimMonad m)) -> BasePrimMonad m a) -> Rand m a Source
Convert function to Rand monad
Type syhnonims
Running monad
runWithCreate :: MonadPrim m => Rand m a -> m a Source
Run monad using fixed seed
runWithSeed :: MonadPrim m => Seed -> Rand m a -> m a Source
Run monad using seed
runWithVector :: (Vector v Word32, MonadPrim m) => Rand m a -> v Word32 -> m a Source
By creating seed from vector of values
runWithSystemRandom :: (MonadPrim m, BasePrimMonad m ~ m) => Rand m a -> IO a Source
Run monad using seed obtained from system's fast source of
pseudo-random numbers ("/dev/urandom" on Unix-like
systems). m
must be either IO or ST.
runWithSystemRandomT :: (MonadPrim m, BasePrimMonad m ~ IO) => Rand m a -> m a Source
Run monad using seed obtained from system's fast source of
pseudo-random numbers ("/dev/urandom" on Unix-like
systems). Unlike runWithSystemRandom
it could be used with
monad stacks.
Random numbers generation
uniformR :: (MonadPrim m, Variate a) => (a, a) -> Rand m a Source
Uniformly distributed values in range