Class ThreadLocalRandomSource

java.lang.Object
org.apache.commons.rng.simple.ThreadLocalRandomSource

public final class ThreadLocalRandomSource extends Object
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
  • Field Details

  • Constructor Details

    • ThreadLocalRandomSource

      private ThreadLocalRandomSource()
      No public construction.
  • Method Details

    • current

      public static UniformRandomProvider current(RandomSource source)
      Returns the current thread's copy of the given 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.

      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