# mwc-probability

Sampling function-based probability distributions.

http://github.com/jtobin/mwc-probability

 Version on this page: 1.3.0@rev:1 LTS Haskell 19.8: 2.3.1 Stackage Nightly 2022-05-25: 2.3.1 Latest on Hackage: 2.3.1

See all snapshots `mwc-probability` appears in

Maintained by
This version can be pinned in stack with:`mwc-probability-1.3.0@sha256:cbd6725c31a27aaf8c537865f8fbd9b52b1aaac872a523309b175ee609283cac,1754`

#### Module documentation for 1.3.0

• System
• System.Random
• System.Random.MWC
Depends on 4 packages(full list with versions):
Used by 8 packages in lts-9.21(full list with versions):

A simple probability distribution type, where distributions are characterized by sampling functions.

This implementation is a thin layer over `mwc-random`, which handles RNG state-passing automatically by using a `PrimMonad` like `IO` or `ST s` under the hood.

Examples

Transform a distribution's support while leaving its density structure invariant:

``````-- uniform over [0, 1] to uniform over [1, 2]
succ <\$> uniform``````

Sequence distributions together using bind:

``````-- a beta-binomial conjugate distribution
beta 1 10 >>= binomial 10``````

Use do-notation to build complex joint distributions from composable, local conditionals:

``````hierarchicalModel = do
[c, d, e, f] <- replicateM 4 \$ uniformR (1, 10)
a <- gamma c d
b <- gamma e f
p <- beta a b
n <- uniformR (5, 10)
binomial n p``````