# Print output for @column tags ?>
Developers

- Design
- Develop
- Distribute

Developer Console

## Most visited

## Recently visited

## Results for

Summary: Methods | Protected Methods | Inherited Methods

# ThreadLocalRandom

`public class ThreadLocalRandom`
`` `extends Random` ``

java.lang.Object
↳ | java.util.Random
| ↳ | java.util.concurrent.ThreadLocalRandom

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 System#getProperty `java.util.secureRandomSeed` is set to `true`.

## Summary

### Public methods
`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 methods
`int` | `next(int bits)` Generates the next pseudorandom number.

### Inherited methods
From class `java.util.Random`
`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).
`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).
`IntStream` | `ints(long streamSize)` Returns a stream producing the given `streamSize` number 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).
`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.
`LongStream` | `longs()` Returns an effectively unlimited stream of pseudorandom `long` values.
`LongStream` | `longs(long streamSize)` Returns a stream producing the given `streamSize` number 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).
`int` | `next(int bits)` Generates the next pseudorandom number.
`boolean` | `nextBoolean()` Returns the next pseudorandom, uniformly distributed `boolean` value from this random number generator's sequence.
`void` | `nextBytes(byte[] bytes)` Generates random bytes and places them into a user-supplied byte array.
`double` | `nextDouble()` Returns the next pseudorandom, uniformly distributed `double` value between `0.0` and `1.0` from this random number generator's sequence.
`float` | `nextFloat()` Returns the next pseudorandom, uniformly distributed `float` value between `0.0` and `1.0` from this random number generator's sequence.
`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()` Returns the next pseudorandom, uniformly distributed `int` value from this random number generator's sequence.
`int` | `nextInt(int bound)` Returns a pseudorandom, uniformly distributed `int` value between 0 (inclusive) and the specified value (exclusive), drawn from this random number generator's sequence.
`long` | `nextLong()` Returns the next pseudorandom, uniformly distributed `long` value from this random number generator's sequence.
`void` | `setSeed(long seed)` Sets the seed of this random number generator using a single `long` seed.
From class `java.lang.Object`
`Object` | `clone()` Creates and returns a copy of this object.
`boolean` | `equals(Object obj)` Indicates whether some other object is "equal to" this one.
`void` | `finalize()` Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.
`final Class<?>` | `getClass()` Returns the runtime class of this `Object`.
`int` | `hashCode()` Returns a hash code value for the object.
`final void` | `notify()` Wakes up a single thread that is waiting on this object's monitor.
`final void` | `notifyAll()` Wakes up all threads that are waiting on this object's monitor.
`String` | `toString()` Returns a string representation of the object.
`final void` | `wait(long timeout, int nanos)` Causes the current thread to wait until another thread invokes the `notify()` method or the `notifyAll()` method for this object, or some other thread interrupts the current thread, or a certain amount of real time has elapsed.
`final void` | `wait(long timeout)` Causes the current thread to wait until either another thread invokes the `notify()` method or the `notifyAll()` method for this object, or a specified amount of time has elapsed.
`final void` | `wait()` Causes the current thread to wait until another thread invokes the `notify()` method or the `notifyAll()` method for this object.

## Public methods

### current

    public static ThreadLocalRandom current ()

Returns the current thread's `ThreadLocalRandom`.

Returns
`ThreadLocalRandom` | the current thread's `ThreadLocalRandom`

### doubles

    public 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).

Parameters
`streamSize` | `long`: the number of values to generate
`randomNumberOrigin` | `double`: the origin (inclusive) of each random value
`randomNumberBound` | `double`: the bound (exclusive) of each random value

Returns
`DoubleStream` | a stream of pseudorandom `double` values, each with the given origin (inclusive) and bound (exclusive)

Throws
`IllegalArgumentException` | if `streamSize` is less than zero
`IllegalArgumentException` | if `randomNumberOrigin` is greater than or equal to `randomNumberBound`

### doubles

    public DoubleStream doubles (long streamSize)

Returns a stream producing the given `streamSize` number of pseudorandom `double` values, each between zero (inclusive) and one (exclusive).

Parameters
`streamSize` | `long`: the number of values to generate

Returns
`DoubleStream` | a stream of `double` values

Throws
`IllegalArgumentException` | if `streamSize` is less than zero

### doubles

    public DoubleStream doubles ()

Returns an effectively unlimited stream of pseudorandom `double` values, each between zero (inclusive) and one (exclusive).

##### Implementation Note:

- This method is implemented to be equivalent to `doubles(Long.MAX_VALUE)`.

Returns
`DoubleStream` | a stream of pseudorandom `double` values

### doubles

    public 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).

##### Implementation Note:

- This method is implemented to be equivalent to `doubles(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)`.

Parameters
`randomNumberOrigin` | `double`: the origin (inclusive) of each random value
`randomNumberBound` | `double`: the bound (exclusive) of each random value

Returns
`DoubleStream` | a stream of pseudorandom `double` values, each with the given origin (inclusive) and bound (exclusive)

Throws
`IllegalArgumentException` | if `randomNumberOrigin` is greater than or equal to `randomNumberBound`

### ints

    public IntStream ints (long streamSize)

Returns a stream producing the given `streamSize` number of pseudorandom `int` values.

Parameters
`streamSize` | `long`: the number of values to generate

Returns
`IntStream` | a stream of pseudorandom `int` values

Throws
`IllegalArgumentException` | if `streamSize` is less than zero

### ints

    public 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).

##### Implementation Note:

- This method is implemented to be equivalent to `ints(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)`.

Parameters
`randomNumberOrigin` | `int`: the origin (inclusive) of each random value
`randomNumberBound` | `int`: the bound (exclusive) of each random value

Returns
`IntStream` | a stream of pseudorandom `int` values, each with the given origin (inclusive) and bound (exclusive)

Throws
`IllegalArgumentException` | if `randomNumberOrigin` is greater than or equal to `randomNumberBound`

### ints

    public IntStream ints ()

Returns an effectively unlimited stream of pseudorandom `int` values.

##### Implementation Note:

- This method is implemented to be equivalent to `ints(Long.MAX_VALUE)`.

Returns
`IntStream` | a stream of pseudorandom `int` values

### ints

    public 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).

Parameters
`streamSize` | `long`: the number of values to generate
`randomNumberOrigin` | `int`: the origin (inclusive) of each random value
`randomNumberBound` | `int`: the bound (exclusive) of each random value

Returns
`IntStream` | a stream of pseudorandom `int` values, each with the given origin (inclusive) and bound (exclusive)

Throws
`IllegalArgumentException` | if `streamSize` is less than zero, or `randomNumberOrigin` is greater than or equal to `randomNumberBound`

### longs

    public LongStream longs (long streamSize)

Returns a stream producing the given `streamSize` number of pseudorandom `long` values.

Parameters
`streamSize` | `long`: the number of values to generate

Returns
`LongStream` | a stream of pseudorandom `long` values

Throws
`IllegalArgumentException` | if `streamSize` is less than zero

### longs

    public LongStream longs ()

Returns an effectively unlimited stream of pseudorandom `long` values.

##### Implementation Note:

- This method is implemented to be equivalent to `longs(Long.MAX_VALUE)`.

Returns
`LongStream` | a stream of pseudorandom `long` values

### longs

    public 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).

##### Implementation Note:

- This method is implemented to be equivalent to `longs(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)`.

Parameters
`randomNumberOrigin` | `long`: the origin (inclusive) of each random value
`randomNumberBound` | `long`: the bound (exclusive) of each random value

Returns
`LongStream` | a stream of pseudorandom `long` values, each with the given origin (inclusive) and bound (exclusive)

Throws
`IllegalArgumentException` | if `randomNumberOrigin` is greater than or equal to `randomNumberBound`

### longs

    public 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).

Parameters
`streamSize` | `long`: the number of values to generate
`randomNumberOrigin` | `long`: the origin (inclusive) of each random value
`randomNumberBound` | `long`: the bound (exclusive) of each random value

Returns
`LongStream` | a stream of pseudorandom `long` values, each with the given origin (inclusive) and bound (exclusive)

Throws
`IllegalArgumentException` | if `streamSize` is less than zero, or `randomNumberOrigin` is greater than or equal to `randomNumberBound`

### nextBoolean

    public boolean nextBoolean ()

Returns a pseudorandom `boolean` value.

Returns
`boolean` | a pseudorandom `boolean` value

### nextDouble

    public double nextDouble ()

Returns a pseudorandom `double` value between zero (inclusive) and one (exclusive).

Returns
`double` | a pseudorandom `double` value between zero (inclusive) and one (exclusive)

### nextDouble

    public double nextDouble (double bound)

Returns a pseudorandom `double` value between 0.0 (inclusive) and the specified bound (exclusive).

Parameters
`bound` | `double`: the upper bound (exclusive). Must be positive.

Returns
`double` | a pseudorandom `double` value between zero (inclusive) and the bound (exclusive)

Throws
`IllegalArgumentException` | if `bound` is not positive

### nextDouble

    public double nextDouble (double origin,
                    double bound)

Returns a pseudorandom `double` value between the specified origin (inclusive) and bound (exclusive).

Parameters
`origin` | `double`: the least value returned
`bound` | `double`: the upper bound (exclusive)

Returns
`double` | a pseudorandom `double` value between the origin (inclusive) and the bound (exclusive)

Throws
`IllegalArgumentException` | if `origin` is greater than or equal to `bound`

### nextFloat

    public float nextFloat ()

Returns a pseudorandom `float` value between zero (inclusive) and one (exclusive).

Returns
`float` | a pseudorandom `float` value between zero (inclusive) and one (exclusive)

### nextGaussian

    public 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.

The general contract of `nextGaussian` is that one `double` value, chosen from (approximately) the usual normal distribution with mean `0.0` and standard deviation `1.0`, is pseudorandomly generated and returned.

The method `nextGaussian` is implemented by class `Random` as if by a threadsafe version of the following:

     private double nextNextGaussian;
     private boolean haveNextNextGaussian = false;

     public double nextGaussian() {
       if (haveNextNextGaussian) {
         haveNextNextGaussian = false;
         return nextNextGaussian;
       } else {
         double v1, v2, s;
         do {
           v1 = 2 * nextDouble() - 1;   // between -1.0 and 1.0
           v2 = 2 * nextDouble() - 1;   // between -1.0 and 1.0
           s = v1 * v1 + v2 * v2;
         } while (s >= 1 || s == 0);
         double multiplier = StrictMath.sqrt(-2 * StrictMath.log(s)/s);
         nextNextGaussian = v2 * multiplier;
         haveNextNextGaussian = true;
         return v1 * multiplier;
       }
     }

This uses the polar method of G. E. P. Box, M. E. Muller, and G. Marsaglia, as described by Donald E. Knuth in The Art of Computer Programming, Volume 3: Seminumerical Algorithms, section 3.4.1, subsection C, algorithm P. Note that it generates two independent values at the cost of only one call to `StrictMath.log` and one call to `StrictMath.sqrt`.

Returns
`double` | the next pseudorandom, Gaussian ("normally") distributed `double` value with mean `0.0` and standard deviation `1.0` from this random number generator's sequence

### nextInt

    public int nextInt (int origin,
                    int bound)

Returns a pseudorandom `int` value between the specified origin (inclusive) and the specified bound (exclusive).

Parameters
`origin` | `int`: the least value returned
`bound` | `int`: the upper bound (exclusive)

Returns
`int` | a pseudorandom `int` value between the origin (inclusive) and the bound (exclusive)

Throws
`IllegalArgumentException` | if `origin` is greater than or equal to `bound`

### nextInt

    public int nextInt ()

Returns a pseudorandom `int` value.

Returns
`int` | a pseudorandom `int` value

### nextInt

    public int nextInt (int bound)

Returns a pseudorandom `int` value between zero (inclusive) and the specified bound (exclusive).

Parameters
`bound` | `int`: the upper bound (exclusive). Must be positive.

Returns
`int` | a pseudorandom `int` value between zero (inclusive) and the bound (exclusive)

Throws
`IllegalArgumentException` | if `bound` is not positive

### nextLong

    public long nextLong (long origin,
                    long bound)

Returns a pseudorandom `long` value between the specified origin (inclusive) and the specified bound (exclusive).

Parameters
`origin` | `long`: the least value returned
`bound` | `long`: the upper bound (exclusive)

Returns
`long` | a pseudorandom `long` value between the origin (inclusive) and the bound (exclusive)

Throws
`IllegalArgumentException` | if `origin` is greater than or equal to `bound`

### nextLong

    public long nextLong (long bound)

Returns a pseudorandom `long` value between zero (inclusive) and the specified bound (exclusive).

Parameters
`bound` | `long`: the upper bound (exclusive). Must be positive.

Returns
`long` | a pseudorandom `long` value between zero (inclusive) and the bound (exclusive)

Throws
`IllegalArgumentException` | if `bound` is not positive

### nextLong

    public long nextLong ()

Returns a pseudorandom `long` value.

Returns
`long` | a pseudorandom `long` value

### setSeed

    public void setSeed (long seed)

Throws `UnsupportedOperationException`. Setting seeds in this generator is not supported.

Parameters
`seed` | `long`: the initial seed

Throws
`UnsupportedOperationException` | always

## Protected methods

### next

    protected int next (int bits)

Generates the next pseudorandom number. Subclasses should override this, as this is used by all other methods.

The general contract of `next` is that it returns an `int` value and if the argument `bits` is between `1` and `32` (inclusive), then that many low-order bits of the returned value will be (approximately) independently chosen bit values, each of which is (approximately) equally likely to be `0` or `1`. The method `next` is implemented by class `Random` by atomically updating the seed to

    (seed * 0x5DEECE66DL + 0xBL) & ((1L << 48) - 1)

and returning

    (int)(seed >>> (48 - bits)).

This is a linear congruential pseudorandom number generator, as defined by D. H. Lehmer and described by Donald E. Knuth in The Art of Computer Programming, Volume 3: Seminumerical Algorithms, section 3.2.1.

Parameters
`bits` | `int`: random bits

Returns
`int` | the next pseudorandom value from this random number generator's sequence

Full name *
Email address *
Company / developer name
One of your Play Store app URLs *
Which best describes your business:*
Apps
Games
Apps & Games
*
*