Class InverseTransformDiscreteSampler
java.lang.Object
org.apache.commons.rng.sampling.distribution.SamplerBase
org.apache.commons.rng.sampling.distribution.InverseTransformDiscreteSampler
- All Implemented Interfaces:
DiscreteSampler,SharedStateDiscreteSampler,SharedStateSampler<SharedStateDiscreteSampler>
public class InverseTransformDiscreteSampler
extends SamplerBase
implements SharedStateDiscreteSampler
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 =
InverseTransformDiscreteSampler.of(RandomSource.XO_RO_SHI_RO_128_PP.create(),
new DiscreteInverseCumulativeProbabilityFunction() {
public int inverseCumulativeProbability(double p) {
return dist.inverseCumulativeProbability(p);
}
});
// Generate random deviate.
int random = binomialSampler.sample();
- Since:
- 1.0
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final DiscreteInverseCumulativeProbabilityFunctionInverse cumulative probability function.private final UniformRandomProviderUnderlying source of randomness. -
Constructor Summary
ConstructorsConstructorDescriptionInverseTransformDiscreteSampler(UniformRandomProvider rng, DiscreteInverseCumulativeProbabilityFunction function) Create an instance. -
Method Summary
Modifier and TypeMethodDescriptionstatic SharedStateDiscreteSamplerof(UniformRandomProvider rng, DiscreteInverseCumulativeProbabilityFunction function) Create a new inverse-transform discrete sampler.intsample()Creates anintsample.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 org.apache.commons.rng.sampling.distribution.SamplerBase
nextDouble, nextInt, nextInt, nextLongMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.apache.commons.rng.sampling.distribution.DiscreteSampler
samples, samples
-
Field Details
-
function
Inverse cumulative probability function. -
rng
Underlying source of randomness.
-
-
Constructor Details
-
InverseTransformDiscreteSampler
public InverseTransformDiscreteSampler(UniformRandomProvider rng, DiscreteInverseCumulativeProbabilityFunction function) Create an instance.- Parameters:
rng- Generator of uniformly distributed random numbers.function- Inverse cumulative probability function.
-
-
Method Details
-
sample
public int sample()Creates anintsample.- Specified by:
samplein interfaceDiscreteSampler- 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<SharedStateDiscreteSampler>- Parameters:
rng- Generator of uniformly distributed random numbers.- Returns:
- the sampler
- Since:
- 1.3
-
of
public static SharedStateDiscreteSampler of(UniformRandomProvider rng, DiscreteInverseCumulativeProbabilityFunction function) Create a new inverse-transform discrete 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:
-