module Data.Random.Distribution.Uniform.Util () where
import Control.Applicative ((<$>))
import Data.Number.LogFloat (LogFloat, logFloat, fromLogFloat)
import Data.Random.Distribution (Distribution)
import Data.Random.Distribution.Uniform
import Data.Random (rvarT)
import Data.Random.Source (getRandomDouble)
instance Distribution Uniform LogFloat where
rvarT (Uniform a b) = do x <- doubleUniform (fromLogFloat a) (fromLogFloat b)
return $ logFloat x
instance Distribution StdUniform LogFloat where
rvarT _ = logFloat <$> getRandomDouble