Class InverseTransformContinuousSampler

java.lang.Object
org.apache.commons.rng.sampling.distribution.SamplerBase
org.apache.commons.rng.sampling.distribution.InverseTransformContinuousSampler
All Implemented Interfaces:
ContinuousSampler, SharedStateContinuousSampler, SharedStateSampler<SharedStateContinuousSampler>

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 =
     InverseTransformContinuousSampler.of(RandomSource.XO_RO_SHI_RO_128_PP.create(),
                                          new ContinuousInverseCumulativeProbabilityFunction() {
                                              public double inverseCumulativeProbability(double p) {
                                                  return dist.inverseCumulativeProbability(p);
                                              }
                                          });

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