random-variates-0.1.0.0: src/Stochastic/Bernoulli.hs
module Stochastic.Bernoulli(Bernoulli, mkBernoulli) where
import Stochastic.Distribution
import Stochastic.Uniform
import Helpers
data Bernoulli = Bernoulli Double Uniform
mkBernoulli :: Uniform -> Double -> Bernoulli
mkBernoulli base p = Bernoulli p base
instance DiscreteDistribution Bernoulli where
randIntIn (a, b) (Bernoulli p g0) =
mapTuple
(\x -> a + ((floor $ x + (1-p)) * (b-a)) )
(Bernoulli p)
(randDouble g0)
randInt g0 = randIntIn (0, 1) g0
toDbl = fromInteger . toInteger