-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | "Uniform RNG => Non-Uniform RNGs" -- -- "Collection of transforms uniform random number generators (RNGs) into -- any of a dozen common RNGs. Each presenting several common interfaces" @package random-variates @version 0.1.0.0 module Stochastic.Distribution class ContinuousDistribution g where randDoubles n g0 = statefully (randDouble) n g0 randDouble :: ContinuousDistribution g => g -> (Double, g) randDoubles :: ContinuousDistribution g => Int -> g -> ([Double], g) class DiscreteDistribution g where randInt g = randIntIn (0, maxBound :: Int) g randInts n g0 = statefully (randInt) n g0 randIntIn (a, b) g0 = ((ceiling (toDbl (b - a + 1) * d)) + (a - 1), g1) where (d, g1) = randDouble g0 randInt :: DiscreteDistribution g => g -> (Int, g) randInts :: DiscreteDistribution g => Int -> g -> ([Int], g) randIntIn :: DiscreteDistribution g => (Int, Int) -> g -> (Int, g) module Stochastic.Uniform data Uniform Uniform :: (Double, Uniform) -> Uniform [rDouble] :: Uniform -> (Double, Uniform) stdUniform :: Int -> Uniform instance Stochastic.Distribution.ContinuousDistribution Stochastic.Uniform.Uniform module Stochastic.Distributions class ContinuousDistribution g where randDoubles n g0 = statefully (randDouble) n g0 randDouble :: ContinuousDistribution g => g -> (Double, g) randDoubles :: ContinuousDistribution g => Int -> g -> ([Double], g) class DiscreteDistribution g where randInt g = randIntIn (0, maxBound :: Int) g randInts n g0 = statefully (randInt) n g0 randIntIn (a, b) g0 = ((ceiling (toDbl (b - a + 1) * d)) + (a - 1), g1) where (d, g1) = randDouble g0 randInt :: DiscreteDistribution g => g -> (Int, g) randInts :: DiscreteDistribution g => Int -> g -> ([Int], g) randIntIn :: DiscreteDistribution g => (Int, Int) -> g -> (Int, g) data Distributions Distributions :: (Int -> Uniform) -> (Int -> Double -> Exponential) -> (Int -> Double -> Double -> Normal) -> (Int -> Int -> Double -> ZipF) -> (Int -> Double -> Geometric) -> (Int -> Double -> Poisson) -> (Int -> Double -> Bernoulli) -> (Int -> Double -> Int -> Binomial) -> Distributions [mkUniform] :: Distributions -> Int -> Uniform [mkExp] :: Distributions -> Int -> Double -> Exponential [mkNormal] :: Distributions -> Int -> Double -> Double -> Normal [mkZipF] :: Distributions -> Int -> Int -> Double -> ZipF [mkGeometric] :: Distributions -> Int -> Double -> Geometric [mkPoisson] :: Distributions -> Int -> Double -> Poisson [mkBernoulli] :: Distributions -> Int -> Double -> Bernoulli [mkBinomial] :: Distributions -> Int -> Double -> Int -> Binomial mkDistributions :: (Int -> Uniform) -> Distributions stdDistributions :: Distributions liftD :: (DiscreteDistribution g) => (Int, Int) -> (Int -> a) -> (g -> (a, g)) liftC :: (ContinuousDistribution g) => (Double -> a) -> (g -> (a, g)) liftDN :: (DiscreteDistribution g) => [(Int, Int)] -> ([Int] -> a) -> (g -> (a, g)) liftCN :: (ContinuousDistribution g) => Int -> ([Double] -> a) -> (g -> (a, g))