dsp-0.1: Numeric/Random/Distribution/Exponential.hs
-----------------------------------------------------------------------------
-- |
-- 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