@@ -31,15 +31,18 @@ import Data.Aeson (FromJSON(..), ToJSON, Value(..), (.:))
3131import Data.Binary (Binary (.. ))
3232import Data.Data (Data , Typeable )
3333import GHC.Generics (Generic )
34+
35+ import qualified System.Random.MWC.Distributions as MWC
36+
3437import Numeric.SpecFunctions (incompleteGamma ,logFactorial )
3538import Numeric.MathFunctions.Constants (m_neg_inf )
3639
40+
3741import qualified Statistics.Distribution as D
3842import qualified Statistics.Distribution.Poisson.Internal as I
3943import Statistics.Internal
4044
4145
42-
4346newtype PoissonDistribution = PD {
4447 poissonLambda :: Double
4548 } deriving (Eq , Typeable , Data , Generic )
@@ -93,6 +96,14 @@ instance D.Entropy PoissonDistribution where
9396instance D. MaybeEntropy PoissonDistribution where
9497 maybeEntropy = Just . D. entropy
9598
99+ -- | @since 0.16.5.0
100+ instance D. DiscreteGen PoissonDistribution where
101+ genDiscreteVar (PD lambda) = MWC. poisson lambda
102+
103+ -- | @since 0.16.5.0
104+ instance D. ContGen PoissonDistribution where
105+ genContVar (PD lambda) gen = fromIntegral <$> MWC. poisson lambda gen
106+
96107-- | Create Poisson distribution.
97108poisson :: Double -> PoissonDistribution
98109poisson l = maybe (error $ errMsg l) id $ poissonE l
0 commit comments