module Stochastic.Binomial(Binomial, mkBinomial) where import Stochastic.Distribution import Stochastic.Bernoulli import Helpers data Binomial = Binomial Int Bernoulli mkBinomial :: Bernoulli -> Int -> Binomial mkBinomial base n = Binomial n base instance DiscreteDistribution Binomial where randIntIn (a, b) (Binomial n g0) = mapTuple (\xs -> (a - 1) + (sum xs)) (Binomial n) (randInts (b - a + 1) g0) randInt (Binomial n g0) = randIntIn (0, n) (Binomial n g0) toDbl = fromInteger . toInteger