module Numeric.Random.Distribution.Binomial (binomial) where
binomial :: Int
-> Double
-> [Double]
-> [Double]
binomial :: Int -> Double -> [Double] -> [Double]
binomial Int
n Double
p [Double]
us = forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a
sum [Double]
xi forall a. a -> [a] -> [a]
: Int -> Double -> [Double] -> [Double]
binomial Int
n Double
p (forall a. Int -> [a] -> [a]
drop Int
n [Double]
us)
where xi :: [Double]
xi = forall a b. (a -> b) -> [a] -> [b]
map (\Double
u -> if Double
u forall a. Ord a => a -> a -> Bool
< Double
p then Double
1 else Double
0) (forall a. Int -> [a] -> [a]
take Int
n [Double]
us)