License | GPL-3 |
---|---|
Maintainer | hackage@mail.kevinl.io |
Stability | experimental |
Safe Haskell | Safe |
Language | Haskell2010 |
This module contains the types used for the stochastic package.
WARNING: In its current state, care should be taken when using discrete distributions as it is never checked that the probabilities sum to 1. As is, execution of sampling may fail at run-time if probabilities aren't normalized.
- data Distribution a where
- Normal :: Mean -> StDev -> Distribution Double
- Bernoulli :: Double -> Distribution Bool
- Discrete :: [(a, Double)] -> Distribution a
- DiscreteUniform :: [a] -> Distribution a
- Uniform :: Distribution Double
- Certain :: a -> Distribution a
- Gamma :: Double -> Double -> Distribution Double
- Beta :: Double -> Double -> Distribution Double
- class Sampleable d where
- newtype Sample g d a = Sample {
- runSample :: (RandomGen g, Sampleable d) => State g (d a)
- type StochProcess = WriterT (Seq Double) (Sample StdGen Distribution) Double
- type Sampler a = Sample StdGen Distribution a
- type Mean = Double
- type StDev = Double
- marsagliaTsang :: RandomGen g => Double -> Double -> g -> (Double, g)
Documentation
data Distribution a where Source #
Datatype representing parameterized probability distributions over values of type a. GADTs are used to restrict types of certain distributions (e.g. normal distributions can only be defined over floating point numbers)
Normal :: Mean -> StDev -> Distribution Double | |
Bernoulli :: Double -> Distribution Bool | |
Discrete :: [(a, Double)] -> Distribution a | |
DiscreteUniform :: [a] -> Distribution a | |
Uniform :: Distribution Double | |
Certain :: a -> Distribution a | |
Gamma :: Double -> Double -> Distribution Double | Gamma distribution, where the first parameter is the shape parameter alpha, and the second parameter is the scale parameter beta. |
Beta :: Double -> Double -> Distribution Double |
Sampleable Distribution Source # |
|
Show a => Show (Distribution a) Source # | Show instance for |
class Sampleable d where Source #
Class of types from which samples can be obtained.
certainDist :: a -> d a Source #
Constructor for a datatype from which we always sample the same value.
sampleFrom :: RandomGen g => d a -> g -> (a, g) Source #
Sampleable Distribution Source # |
|
Sample
monad containing a random number generator plus a type from which
we can sample values of type a
Sample | |
|
(RandomGen g, Sampleable d) => Monad (Sample g d) Source # | Monad instance for Sample. |
(RandomGen g, Sampleable s) => Functor (Sample g s) Source # | Trivial |
(RandomGen g, Sampleable s) => Applicative (Sample g s) Source # | Trivial |
type StochProcess = WriterT (Seq Double) (Sample StdGen Distribution) Double Source #
Monad that represents a stochastic process. It allows us to record numeric values as we sample.
type Sampler a = Sample StdGen Distribution a Source #
Type synonym for shorter type annotations for Sample
.