random-fu-0.0.0.2: src/Data/Random/Distribution/Exponential.hs
{-
- ``Data/Random/Distribution/Exponential''
-}
{-# LANGUAGE
MultiParamTypeClasses,
FlexibleInstances, FlexibleContexts,
UndecidableInstances
#-}
module Data.Random.Distribution.Exponential where
import Data.Random.Source
import Data.Random.RVar
import Data.Random.Distribution
import Data.Random.Distribution.Uniform
data Exponential a = Exp a
realFloatExponential :: RealFloat a => a -> RVar a
realFloatExponential lambdaRecip = do
x <- realFloatStdUniform
return (negate (log x) * lambdaRecip)
exponential :: Distribution Exponential a => a -> RVar a
exponential = sample . Exp
instance (RealFloat a) => Distribution Exponential a where
rvar (Exp lambdaRecip) = realFloatExponential lambdaRecip