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