Class InverseTransformContinuousSampler

java.lang.Object
org.apache.commons.rng.sampling.distribution.SamplerBase
org.apache.commons.rng.sampling.distribution.InverseTransformContinuousSampler
All Implemented Interfaces:
ContinuousSampler

public class InverseTransformContinuousSampler
extends SamplerBase
implements ContinuousSampler
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.RealDistribution;
 import org.apache.commons.math3.distribution.ChiSquaredDistribution;

 import org.apache.commons.rng.simple.RandomSource;
 import org.apache.commons.rng.sampling.distribution.ContinuousSampler;
 import org.apache.commons.rng.sampling.distribution.InverseTransformContinuousSampler;
 import org.apache.commons.rng.sampling.distribution.ContinuousInverseCumulativeProbabilityFunction;

 // Distribution to sample.
 final RealDistribution dist = new ChiSquaredDistribution(9);
 // Create the sampler.
 final ContinuousSampler chiSquareSampler =
     new InverseTransformContinuousSampler(RandomSource.create(RandomSource.MT),
                                           new ContinuousInverseCumulativeProbabilityFunction() {
                                               public double inverseCumulativeProbability(double p) {
                                                   return dist.inverseCumulativeProbability(p);
                                               }
                                           });

 // Generate random deviate.
 double random = chiSquareSampler.sample();
 
Since:
1.0