Package org.apache.commons.rng.simple
Class ThreadLocalRandomSource
java.lang.Object
org.apache.commons.rng.simple.ThreadLocalRandomSource
This class provides a thread-local
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();
- Since:
- 1.3
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static classExtend theThreadLocalto allow creation of the desiredRandomSource. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final Map<RandomSource, ThreadLocal<UniformRandomProvider>> A map containing theThreadLocalinstance for eachRandomSource. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic UniformRandomProvidercurrent(RandomSource source) Returns the current thread's copy of the givensource.
-
Field Details
-
SOURCES
A map containing theThreadLocalinstance for eachRandomSource.This should only be modified to create new instances in a synchronized block.
-
-
Constructor Details
-
ThreadLocalRandomSource
private ThreadLocalRandomSource()No public construction.
-
-
Method Details
-
current
Returns the current thread's copy of the givensource. If there is no value for the current thread, it is first initialized to the value returned byRandomSource.create().Note if the
sourcerequires additional arguments then it is not supported.- Parameters:
source- the source- Returns:
- the current thread's value of the
source. - Throws:
IllegalArgumentException- if the source is null or the source requires arguments
-