----------------------------------------------------------------------------- -- | -- Module : Numeric.Random.Distribution.Exponential -- Copyright : (c) Matthew Donadio 2003 -- License : GPL -- -- Maintainer : m.p.donadio@ieee.org -- Stability : experimental -- Portability : portable -- -- UNTESTED -- -- Module for transforming a list of uniform random variables into a -- list of exponential random variables. -- -- @ f(x) = lambda * exp(-lambda*x) @ -- -- @ F(x) = 1 - exp(-lambda*x) @ -- -- @ lambda = 1 \/ mu @ -- -- Reference: Ross -- ---------------------------------------------------------------------------- -- TODO: Marsaglia's ziggurat method module Numeric.Random.Distribution.Exponential (exponential_inv) where -- * Functions -- | Generates a list of exponential random variables from a list -- of uniforms via the inverse transformation method -- -- @ F(x) = 1 - exp(-lambda*x) @ -- -- @ F^-1(x) = -log(1 - x) \/ lambda@ exponential_inv :: Double -- ^ lambda -> [Double] -- ^ U -> [Double] -- ^ X exponential_inv lambda us = map (\u -> -log (1 - u) / lambda) us