Class InverseTransformDiscreteSampler

java.lang.Object
org.apache.commons.rng.sampling.distribution.SamplerBase
org.apache.commons.rng.sampling.distribution.InverseTransformDiscreteSampler
All Implemented Interfaces:
DiscreteSampler

public class InverseTransformDiscreteSampler
extends SamplerBase
implements DiscreteSampler
Distribution sampler that uses the inversion method. It can be used to sample any distribution that provides access to its inverse cumulative probability function.

Sampling uses UniformRandomProvider.nextDouble().

Example:


 import org.apache.commons.math3.distribution.IntegerDistribution;
 import org.apache.commons.math3.distribution.BinomialDistribution;

 import org.apache.commons.rng.simple.RandomSource;
 import org.apache.commons.rng.sampling.distribution.DiscreteSampler;
 import org.apache.commons.rng.sampling.distribution.InverseTransformDiscreteSampler;
 import org.apache.commons.rng.sampling.distribution.DiscreteInverseCumulativeProbabilityFunction;

 // Distribution to sample.
 final IntegerDistribution dist = new BinomialDistribution(11, 0.56);
 // Create the sampler.
 final DiscreteSampler binomialSampler =
     new InverseTransformDiscreteSampler(RandomSource.create(RandomSource.MT),
                                         new DiscreteInverseCumulativeProbabilityFunction() {
                                             public int inverseCumulativeProbability(double p) {
                                                 return dist.inverseCumulativeProbability(p);
                                             }
                                         });

 // Generate random deviate.
 int random = binomialSampler.sample();
 
Since:
1.0