@hackage boltzmann-samplers0.1.1.0
Uniform random generators
Categories
License
MIT
Maintainer
lysxia@gmail.com
Links
Versions
Installation
Tested Compilers
Dependencies (13)
- MonadRandom
- QuickCheck
- ad
- base >=4.8 && <5
- containers
- hashable Show all…
Dependents (3)
@hackage/generic-random, @hackage/acme-everything, @hackage/essence-of-live-coding-quickcheck
Package Flags
test
(off by default)
Enable testing. Disabled by default because the current test suite is slow and can fail with non-zero probability.
Boltzmann samplers

Boltzmann.Data
Define sized random generators for Data.Data generic types.
{-# LANGUAGE DeriveDataTypeable #-}
import Data.Data
import Test.QuickCheck
import Boltzmann.Data
data Term = Lambda Int Term | App Term Term | Var Int
deriving (Show, Data)
instance Arbitrary Term where
arbitrary = sized $ generatorPWith [positiveInts]
positiveInts :: Alias Gen
positiveInts =
alias $ \() -> fmap getPositive arbitrary :: Gen Int
main = sample (arbitrary :: Gen Term)
- Objects of the same size (number of constructors) occur with the same probability (see Duchon et al., references below).
- Implements rejection sampling and pointing.
- Works with QuickCheck and MonadRandom, but also similar user-defined monads
for randomness (just implement
MonadRandomLike). - Can be tweaked somewhat with user defined generators.
Boltzmann.Species
An experimental interface to obtain Boltzmann samplers from an applicative specification of a combinatorial system.
No documentation (yet).
References
-
The core theory of Boltzmann samplers is described in Boltzmann Samplers for the Random Generation of Combinatorial Structures, P. Duchon, P. Flajolet, G. Louchard, G. Schaeffer.
-
The numerical evaluation of recursively defined generating functions is taken from Boltzmann Oracle for Combinatorial Systems, C. Pivoteau, B. Salvy, M. Soria.