Class AliasMethodSampler

java.lang.Object
org.jgrapht.alg.util.AliasMethodSampler

public class AliasMethodSampler extends Object
The alias method for sampling from a discrete probability distribution.

The implementation is described in the paper: Michael D. Vose. A Linear Algorithm for Generating Random Numbers with a Given Distribution. IEEE Transactions on Software Engineering, 17(9):972--975, 1991.

Initialization takes $O(n)$ where $n$ is the number of items. Sampling takes $O(1)$.

Author:
Dimitrios Michail
  • Constructor Details

    • AliasMethodSampler

      public AliasMethodSampler(double[] p)
      Constructor
      Parameters:
      p - the probability distribution where position i of the array is $Prob(X=i)$
      Throws:
      IllegalArgumentException - in case of a non-valid probability distribution
    • AliasMethodSampler

      public AliasMethodSampler(double[] p, long seed)
      Constructor
      Parameters:
      p - the probability distribution where position $i$ of the array is $Prob(X=i)$
      seed - seed to use for the random number generator
    • AliasMethodSampler

      public AliasMethodSampler(double[] p, Random rng)
      Constructor
      Parameters:
      p - the probability distribution where position $i$ of the array is $Prob(X=i)$
      rng - the random number generator
      Throws:
      IllegalArgumentException - in case of a non-valid probability distribution
    • AliasMethodSampler

      public AliasMethodSampler(double[] p, Random rng, double epsilon)
      Constructor
      Parameters:
      p - the probability distribution where position $i$ of the array is $Prob(X=i)$
      rng - the random number generator
      epsilon - tolerance used when comparing floating-point values
      Throws:
      IllegalArgumentException - in case of a non-valid probability distribution
  • Method Details

    • next

      public int next()
      Sample a value from the distribution.
      Returns:
      a sample from the distribution