module Stochastic.Distribution.Continuous where

import Stochastic.Tools

class ContinuousDistribution g where
  rand  :: g -> (Double, g)
  
  rands :: Int -> g -> ([Double], g)
  rands n g0 = statefully (rand) n g0

  cdf  :: g -> Double -> Double
  cdf' :: g -> Double -> Double
  
  pdf  :: g -> Double -> Double -> Double
  pdf g a b = (cdf g b) - (cdf g a)

  degreesOfFreedom :: g -> Int