public final class ThreadLocalRandomSource extends Object
UniformRandomProvider.
The UniformRandomProvider is created once-per-thread using the default
construction method RandomSource.create().
Example:
import org.apache.commons.rng.simple.RandomSource;
import org.apache.commons.rng.simple.ThreadLocalRandomSource;
import org.apache.commons.rng.sampling.distribution.PoissonSampler;
// Access a thread-safe random number generator
UniformRandomProvider rng = ThreadLocalRandomSource.current(RandomSource.SPLIT_MIX_64);
// One-time Poisson sample
double mean = 12.3;
int counts = PoissonSampler.of(rng, mean).sample();
Note if the RandomSource requires additional arguments then it is not
supported. The same can be achieved using:
import org.apache.commons.rng.simple.RandomSource;
import org.apache.commons.rng.sampling.distribution.PoissonSampler;
// Provide a thread-safe random number generator with data arguments
private static ThreadLocal<UniformRandomProvider> rng =
new ThreadLocal<UniformRandomProvider>() {
@Override
protected UniformRandomProvider initialValue() {
return RandomSource.TWO_CMRES_SELECT.create(null, 3, 4);
}
};
// One-time Poisson sample using a thread-safe random number generator
double mean = 12.3;
int counts = PoissonSampler.of(rng.get(), mean).sample();
| Modifier and Type | Method and Description |
|---|---|
static UniformRandomProvider |
current(RandomSource source)
Returns the current thread's copy of the given
source. |
public static UniformRandomProvider current(RandomSource source)
source. If there is no
value for the current thread, it is first initialized to the value returned
by RandomSource.create().
Note if the source requires additional arguments then it is not
supported.
source - the sourcesource.IllegalArgumentException - if the source is null or the source requires argumentsCopyright © 2016–2022 The Apache Software Foundation. All rights reserved.