ThreadLocalRandom

public class ThreadLocalRandom extends Random

A random number generator isolated to the current thread. Like the global Random generator used by the Math class, a ThreadLocalRandom is initialized with an internally generated seed that may not otherwise be modified. When applicable, use of ThreadLocalRandom rather than shared Random objects in concurrent programs will typically encounter much less overhead and contention. Use of ThreadLocalRandom is particularly appropriate when multiple tasks (for example, each a ForkJoinTask) use random numbers in parallel in thread pools.

Usages of this class should typically be of the form: ThreadLocalRandom.current().nextX(...) (where X is Int, Long, etc). When all usages are of this form, it is never possible to accidently share a ThreadLocalRandom across multiple threads.

This class also provides additional commonly used bounded random generation methods.

Instances of ThreadLocalRandom are not cryptographically secure. Consider instead using SecureRandom in security-sensitive applications. Additionally, default-constructed instances do not use a cryptographically random seed unless the {@linkplain System#getProperty system property} java.util.secureRandomSeed is set to true.

Public Method Summary

static ThreadLocalRandom
current()
Returns the current thread's ThreadLocalRandom.
DoubleStream
doubles(long streamSize, double randomNumberOrigin, double randomNumberBound)
Returns a stream producing the given streamSize number of pseudorandom double values, each conforming to the given origin (inclusive) and bound (exclusive).
DoubleStream
doubles(long streamSize)
Returns a stream producing the given streamSize number of pseudorandom double values, each between zero (inclusive) and one (exclusive).
DoubleStream
doubles()
Returns an effectively unlimited stream of pseudorandom double values, each between zero (inclusive) and one (exclusive).
DoubleStream
doubles(double randomNumberOrigin, double randomNumberBound)
Returns an effectively unlimited stream of pseudorandom double values, each conforming to the given origin (inclusive) and bound (exclusive).
IntStream
ints(long streamSize)
Returns a stream producing the given streamSize number of pseudorandom int values.
IntStream
ints(int randomNumberOrigin, int randomNumberBound)
Returns an effectively unlimited stream of pseudorandom int values, each conforming to the given origin (inclusive) and bound (exclusive).
IntStream
ints()
Returns an effectively unlimited stream of pseudorandom int values.
IntStream
ints(long streamSize, int randomNumberOrigin, int randomNumberBound)
Returns a stream producing the given streamSize number of pseudorandom int values, each conforming to the given origin (inclusive) and bound (exclusive).
LongStream
longs(long streamSize)
Returns a stream producing the given streamSize number of pseudorandom long values.
LongStream
longs()
Returns an effectively unlimited stream of pseudorandom long values.
LongStream
longs(long randomNumberOrigin, long randomNumberBound)
Returns an effectively unlimited stream of pseudorandom long values, each conforming to the given origin (inclusive) and bound (exclusive).
LongStream
longs(long streamSize, long randomNumberOrigin, long randomNumberBound)
Returns a stream producing the given streamSize number of pseudorandom long, each conforming to the given origin (inclusive) and bound (exclusive).
boolean
nextBoolean()
Returns a pseudorandom boolean value.
double
nextDouble()
Returns a pseudorandom double value between zero (inclusive) and one (exclusive).
double
nextDouble(double bound)
Returns a pseudorandom double value between 0.0 (inclusive) and the specified bound (exclusive).
double
nextDouble(double origin, double bound)
Returns a pseudorandom double value between the specified origin (inclusive) and bound (exclusive).
float
nextFloat()
Returns a pseudorandom float value between zero (inclusive) and one (exclusive).
double
nextGaussian()
Returns the next pseudorandom, Gaussian ("normally") distributed double value with mean 0.0 and standard deviation 1.0 from this random number generator's sequence.
int
nextInt(int origin, int bound)
Returns a pseudorandom int value between the specified origin (inclusive) and the specified bound (exclusive).
int
nextInt()
Returns a pseudorandom int value.
int
nextInt(int bound)
Returns a pseudorandom int value between zero (inclusive) and the specified bound (exclusive).
long
nextLong(long origin, long bound)
Returns a pseudorandom long value between the specified origin (inclusive) and the specified bound (exclusive).
long
nextLong(long bound)
Returns a pseudorandom long value between zero (inclusive) and the specified bound (exclusive).
long
nextLong()
Returns a pseudorandom long value.
void
setSeed(long seed)
Throws UnsupportedOperationException.

Protected Method Summary

int
next(int bits)
Generates the next pseudorandom number.

Inherited Method Summary