A lookup table for arbitrary discrete distributions. It allows
the generation of random variates in O(1). Note that probability
is quantized in units of 1/2^32, and all distributions with
infinite support (e.g. Poisson) should be truncated.
Modulemwc-random-0.15.2.0Haskell2010
System.Random.MWC.CondensedTable
Table-driven generation of random variates. This approach can generate random variates in O(1) time for the supported distributions, at a modest cost in initialization time.
- 3 types
- 6 values
- Packagemwc-random-0.15.2.0
- Exports9
- LanguageHaskell2010
- LicenceBSD-2-Clause
- SourceCondensedTable.hs
Condensed tables
4 declarationsA CondensedTable that uses boxed vectors, and is able to hold any type of element.
A CondensedTable that uses unboxed vectors.
Generate a random value using a condensed table.
Constructors for tables
3 declarationsGenerate a condensed lookup table from a list of outcomes with given probabilities. The vector should be non-empty and the probabilities should be non-negative and sum to 1. If this is not the case, this algorithm will construct a table for some distribution that may bear no resemblance to what you intended.
Same as tableFromProbabilities but treats number as weights not probilities. Non-positive weights are discarded, and those remaining are normalized to 1.
Generate a condensed lookup table from integer weights. Weights
should sum to 2^32 at least approximately. This function will
correct small deviations from 2^32 such as arising from rounding
errors. But for large deviations it's likely to product incorrect
result with terrible performance.
Disrete distributions
Create a lookup table for the Poisson distribution. Note that table construction may have significant cost. For λ < 100 it takes as much time to build table as generation of 1000-30000 variates.
Create a lookup table for the binomial distribution.
References
0 declarationsWang, J.; Tsang, W. W.; G. Marsaglia (2004), Fast Generation of Discrete Random Variables, /Journal of Statistical Software, American Statistical Association/, vol. 11(i03). http://ideas.repec.org/a/jss/jstsof/11i03.html