A Drv using the Aliasing method [1]: a distribution is described by a set of probabilities and aliases.
A Drv using the Aliasing method [1]: a distribution is described by a set of probabilities and aliases. In order to pick a value j in distribution Pr(Y = j), j=1..n, we first pick a random integer in the uniform distribution over 1..n. We then inspect the probability table whose value represents a biased coin; the random integer is returned with this probability, otherwise the index in the alias table is chosen.
"It is a peculiar way to throw dice, but the results are indistinguishable from the real thing." -Knuth (TAOCP Vol. 2; 3.4.1 p.121).
[1] Alastair J. Walker. 1977. An Efficient Method for Generating Discrete Random Variables with General Distributions. ACM Trans. Math. Softw. 3, 3 (September 1977), 253-256. DOI=10.1145/355744.355749 http://doi.acm.org/10.1145/355744.355749
Create a new Drv representing the passed in distribution of probabilities.
Create a new Drv representing the passed in distribution of probabilities. These must add up to 1, however we cannot reliably test for this due to numerical stability issues: we're operating on the honor's system.
Create a probability distribution based on a set of weights (ratios).
Generate probability and alias tables in the manner of to Vose [1].
Generate probability and alias tables in the manner of to Vose [1]. This algorithm is simple, efficient, and intuitive. Vose's algorithm is O(n) in the distribution size. The paper below contains correctness and complexity proofs.
[1] Michael D. Vose. 1991. A Linear Algorithm for Generating Random Numbers with a Given Distribution. IEEE Trans. Softw. Eng. 17, 9 (September 1991), 972-975. DOI=10.1109/32.92917 http://dx.doi.org/10.1109/32.92917
Create discrete random variables representing arbitrary distributions.