Copyright | (c) 2010-2012 Aleksey Khudyakov |
---|---|
License | BSD3 |
Maintainer | alexey.skladnoy@gmail.com |
Stability | experimental |
Portability | portable |
Safe Haskell | None |
Language | Haskell98 |
Monadic wrapper for various distributions generators.
- normal :: MonadPrim m => Double -> Double -> Rand m Double
- standard :: MonadPrim m => Rand m Double
- exponential :: MonadPrim m => Double -> Rand m Double
- truncatedExp :: MonadPrim m => Double -> (Double, Double) -> Rand m Double
- gamma :: MonadPrim m => Double -> Double -> Rand m Double
- chiSquare :: MonadPrim m => Int -> Rand m Double
- beta :: MonadPrim m => Double -> Double -> Rand m Double
- categorical :: (MonadPrim m, Vector v Double) => v Double -> Rand m Int
- geometric0 :: MonadPrim m => Double -> Rand m Int
- geometric1 :: MonadPrim m => Double -> Rand m Int
- bernoulli :: MonadPrim m => Double -> Rand m Bool
- dirichlet :: (MonadPrim m, Traversable t) => t Double -> Rand m (t Double)
- uniformPermutation :: (MonadPrim m, Vector v Int) => Int -> Rand m (v Int)
- uniformShuffle :: (MonadPrim m, Vector v a) => v a -> Rand m (v a)
- uniformShuffleM :: (MonadPrim m, MVector v a, PrimState m ~ PrimState (BasePrimMonad m)) => v (PrimState m) a -> Rand m ()
Variates: non-uniformly distributed values
Continuous distributions
Normally distributed variable
standard :: MonadPrim m => Rand m Double Source
Normally distributed variables with mean 0 and 1 standard deviation
Generate exponentially distributed random variate.
:: MonadPrim m | |
=> Double | Scale parameter |
-> (Double, Double) | Range to which distribution is truncated. Values may be negative. |
-> Rand m Double |
Generate truncated exponentially distributed random variate.
Random variate generator for gamma distribution.
Random variate generator for chi square distribution.
Random variate generator for Beta distribution
Discrete distribution
Random variate generator for categorical distribution.
Note that if you need to generate a lot of variates functions System.Random.MWC.CondensedTable will offer better performance. If only few is needed this function will faster since it avoids costs of setting up table.
Random variate generator for the geometric distribution, computing the number of failures before success. Distribution's support is [0..].
Random variate generator for geometric distribution for number of
trials. Distribution's support is [1..] (i.e. just geometric0
shifted by 1).
Random variate generator for Bernoulli distribution
Multivariate
:: (MonadPrim m, Traversable t) | |
=> t Double | container of parameters |
-> Rand m (t Double) |
Random variate generator for Dirichlet distribution
Permutations
uniformPermutation :: (MonadPrim m, Vector v Int) => Int -> Rand m (v Int) Source
Random variate generator for uniformly distributed permutations. It returns random permutation of vector [0 .. n-1].
This is the Fisher-Yates shuffle
uniformShuffle :: (MonadPrim m, Vector v a) => v a -> Rand m (v a) Source
Random variate generator for a uniformly distributed shuffle of a vector.
uniformShuffleM :: (MonadPrim m, MVector v a, PrimState m ~ PrimState (BasePrimMonad m)) => v (PrimState m) a -> Rand m () Source
In-place uniformly distributed shuffle (all shuffles are equiprobable) of a vector.