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 class
Extend theThreadLocal
to allow creation of the desiredRandomSource
. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final Map
<RandomSource, ThreadLocal<UniformRandomProvider>> A map containing theThreadLocal
instance for eachRandomSource
. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic UniformRandomProvider
current
(RandomSource source) Returns the current thread's copy of the givensource
.
-
Field Details
-
SOURCES
A map containing theThreadLocal
instance 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
source
requires 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
-