module Stochastic.Distribution.Discrete where

import Stochastic.Tools

class DiscreteDistribution g where
  rand :: g -> (Int, g)

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

  cdf  :: g -> Int -> Double
  
  cdf' :: g -> Double -> Int
  
  pmf  :: g -> Int -> Double