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>
public class InverseTransformContinuousSampler
extends SamplerBase
implements 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
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final ContinuousInverseCumulativeProbabilityFunctionInverse cumulative probability function.private final UniformRandomProviderUnderlying source of randomness. -
Constructor Summary
ConstructorsConstructorDescriptionInverseTransformContinuousSampler(UniformRandomProvider rng, ContinuousInverseCumulativeProbabilityFunction function) Create an instance. -
Method Summary
Modifier and TypeMethodDescriptionstatic SharedStateContinuousSamplerCreate a new inverse-transform continuous sampler.doublesample()Creates adoublesample.toString()Create a new instance of the sampler with the same underlying state using the given uniform random provider as the source of randomness.Methods inherited from class SamplerBase
nextDouble, nextInt, nextInt, nextLongMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface ContinuousSampler
samples, samples
-
Field Details
-
function
Inverse cumulative probability function. -
rng
Underlying source of randomness.
-
-
Constructor Details
-
InverseTransformContinuousSampler
public InverseTransformContinuousSampler(UniformRandomProvider rng, ContinuousInverseCumulativeProbabilityFunction function) Create an instance.- Parameters:
rng- Generator of uniformly distributed random numbers.function- Inverse cumulative probability function.
-
-
Method Details
-
sample
public double sample()Creates adoublesample.- Specified by:
samplein interfaceContinuousSampler- Returns:
- a sample.
-
toString
- Overrides:
toStringin classSamplerBase
-
withUniformRandomProvider
Create a new instance of the sampler with the same underlying state using the given uniform random provider as the source of randomness.Note: The new sampler will share the inverse cumulative probability function. This must be suitable for concurrent use to ensure thread safety.
- Specified by:
withUniformRandomProviderin interfaceSharedStateSampler<SharedStateContinuousSampler>- Parameters:
rng- Generator of uniformly distributed random numbers.- Returns:
- the sampler
- Since:
- 1.3
-
of
public static SharedStateContinuousSampler of(UniformRandomProvider rng, ContinuousInverseCumulativeProbabilityFunction function) Create a new inverse-transform continuous sampler.To use the sampler to
share statethe function must be suitable for concurrent use.- Parameters:
rng- Generator of uniformly distributed random numbers.function- Inverse cumulative probability function.- Returns:
- the sampler
- Since:
- 1.3
- See Also:
-