Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Methods](https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#pubmethods) \| [Protected Methods](https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#promethods) \| [Inherited Methods](https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#inhmethods)

# ThreadLocalRandom

` public final class ThreadLocalRandom `   
` ` ` extends https://developer.android.com/reference/java/util/Random ` ` `

|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) |||
| ↳ | [java.util.Random](https://developer.android.com/reference/java/util/Random) ||
|   | ↳ | java.util.concurrent.ThreadLocalRandom |

<br />

*** ** * ** ***

A random number generator (with period 2^64^) isolated to the current thread. Like the global `https://developer.android.com/reference/java/util/Random` generator used by the `https://developer.android.com/reference/java/lang/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 `https://developer.android.com/reference/java/util/concurrent/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 accidentally 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 `https://developer.android.com/reference/java/security/SecureRandom` in security-sensitive applications. Additionally, default-constructed instances do not use a cryptographically random seed unless the [system property](https://developer.android.com/reference/java/lang/System#getProperty(java.lang.String)) `java.util.secureRandomSeed` is set to `true`.

## Summary

| ### Public methods ||
|---|---|
| ` static https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom` | ` https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#current()() ` Returns the current thread's `ThreadLocalRandom` object. |
| ` https://developer.android.com/reference/java/util/stream/DoubleStream` | ` https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#doubles(long,%20double,%20double)(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). |
| ` https://developer.android.com/reference/java/util/stream/DoubleStream` | ` https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#doubles(long)(long streamSize) ` Returns a stream producing the given `streamSize` number of pseudorandom `double` values, each between zero (inclusive) and one (exclusive). |
| ` https://developer.android.com/reference/java/util/stream/DoubleStream` | ` https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#doubles()() ` Returns an effectively unlimited stream of pseudorandom `double` values, each between zero (inclusive) and one (exclusive). |
| ` https://developer.android.com/reference/java/util/stream/DoubleStream` | ` https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#doubles(double,%20double)(double randomNumberOrigin, double randomNumberBound) ` Returns an effectively unlimited stream of pseudorandom `double` values, each conforming to the given origin (inclusive) and bound (exclusive). |
| ` https://developer.android.com/reference/java/util/stream/IntStream` | ` https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#ints(long)(long streamSize) ` Returns a stream producing the given `streamSize` number of pseudorandom `int` values. |
| ` https://developer.android.com/reference/java/util/stream/IntStream` | ` https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#ints(int,%20int)(int randomNumberOrigin, int randomNumberBound) ` Returns an effectively unlimited stream of pseudorandom `int` values, each conforming to the given origin (inclusive) and bound (exclusive). |
| ` https://developer.android.com/reference/java/util/stream/IntStream` | ` https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#ints()() ` Returns an effectively unlimited stream of pseudorandom `int` values. |
| ` https://developer.android.com/reference/java/util/stream/IntStream` | ` https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#ints(long,%20int,%20int)(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). |
| ` https://developer.android.com/reference/java/util/stream/LongStream` | ` https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#longs(long)(long streamSize) ` Returns a stream producing the given `streamSize` number of pseudorandom `long` values. |
| ` https://developer.android.com/reference/java/util/stream/LongStream` | ` https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#longs()() ` Returns an effectively unlimited stream of pseudorandom `long` values. |
| ` https://developer.android.com/reference/java/util/stream/LongStream` | ` https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#longs(long,%20long)(long randomNumberOrigin, long randomNumberBound) ` Returns an effectively unlimited stream of pseudorandom `long` values, each conforming to the given origin (inclusive) and bound (exclusive). |
| ` https://developer.android.com/reference/java/util/stream/LongStream` | ` https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#longs(long,%20long,%20long)(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` | ` https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#nextBoolean()() ` Returns the next pseudorandom, uniformly distributed `boolean` value from this random number generator's sequence. |
| ` double` | ` https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#nextDouble()() ` Returns the next pseudorandom, uniformly distributed `double` value between `0.0` and `1.0` from this random number generator's sequence. |
| ` double` | ` https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#nextDouble(double)(double bound) ` <br /> |
| ` double` | ` https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#nextDouble(double,%20double)(double origin, double bound) ` <br /> |
| ` float` | ` https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#nextFloat(float,%20float)(float origin, float bound) ` <br /> |
| ` float` | ` https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#nextFloat()() ` Returns the next pseudorandom, uniformly distributed `float` value between `0.0` and `1.0` from this random number generator's sequence. |
| ` float` | ` https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#nextFloat(float)(float bound) ` <br /> |
| ` int` | ` https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#nextInt(int,%20int)(int origin, int bound) ` <br /> |
| ` int` | ` https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#nextInt()() ` Returns the next pseudorandom, uniformly distributed `int` value from this random number generator's sequence. |
| ` int` | ` https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#nextInt(int)(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` | ` https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#nextLong(long,%20long)(long origin, long bound) ` <br /> |
| ` long` | ` https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#nextLong(long)(long bound) ` <br /> |
| ` long` | ` https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#nextLong()() ` Returns the next pseudorandom, uniformly distributed `long` value from this random number generator's sequence. |
| ` void` | ` https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#setSeed(long)(long seed) ` Throws `UnsupportedOperationException`. |

| ### Protected methods ||
|---|---|
| ` int` | ` https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom#next(int)(int bits) ` Generates a pseudorandom number with the indicated number of low-order bits. |

### Inherited methods

From class ` https://developer.android.com/reference/java/util/Random ` ` https://developer.android.com/reference/java/util/stream/DoubleStream` ` https://developer.android.com/reference/java/util/Random#doubles(long)(long streamSize) `

Returns a stream producing the given `streamSize` number of pseudorandom `double` values, each between zero (inclusive) and one (exclusive).
` https://developer.android.com/reference/java/util/stream/DoubleStream` ` https://developer.android.com/reference/java/util/Random#doubles()() `

Returns an effectively unlimited stream of pseudorandom `double` values, each between zero (inclusive) and one (exclusive).
` https://developer.android.com/reference/java/util/stream/DoubleStream` ` https://developer.android.com/reference/java/util/Random#doubles(double,%20double)(double randomNumberOrigin, double randomNumberBound) `

Returns an effectively unlimited stream of pseudorandom `double` values, each conforming to the given origin (inclusive) and bound (exclusive).
` https://developer.android.com/reference/java/util/stream/DoubleStream` ` https://developer.android.com/reference/java/util/Random#doubles(long,%20double,%20double)(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).
` static https://developer.android.com/reference/java/util/Random` ` https://developer.android.com/reference/java/util/Random#from(java.util.random.RandomGenerator)(https://developer.android.com/reference/java/util/random/RandomGenerator generator) `

Returns an instance of `Random` that delegates method calls to the `https://developer.android.com/reference/java/util/random/RandomGenerator` argument.
` https://developer.android.com/reference/java/util/stream/IntStream` ` https://developer.android.com/reference/java/util/Random#ints(long)(long streamSize) `

Returns a stream producing the given `streamSize` number of pseudorandom `int` values.
` https://developer.android.com/reference/java/util/stream/IntStream` ` https://developer.android.com/reference/java/util/Random#ints(int,%20int)(int randomNumberOrigin, int randomNumberBound) `

Returns an effectively unlimited stream of pseudorandom `int` values, each conforming to the given origin (inclusive) and bound (exclusive).
` https://developer.android.com/reference/java/util/stream/IntStream` ` https://developer.android.com/reference/java/util/Random#ints(long,%20int,%20int)(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).
` https://developer.android.com/reference/java/util/stream/IntStream` ` https://developer.android.com/reference/java/util/Random#ints()() `

Returns an effectively unlimited stream of pseudorandom `int` values.
` https://developer.android.com/reference/java/util/stream/LongStream` ` https://developer.android.com/reference/java/util/Random#longs()() `

Returns an effectively unlimited stream of pseudorandom `long` values.
` https://developer.android.com/reference/java/util/stream/LongStream` ` https://developer.android.com/reference/java/util/Random#longs(long)(long streamSize) `

Returns a stream producing the given `streamSize` number of pseudorandom `long` values.
` https://developer.android.com/reference/java/util/stream/LongStream` ` https://developer.android.com/reference/java/util/Random#longs(long,%20long)(long randomNumberOrigin, long randomNumberBound) `

Returns an effectively unlimited stream of pseudorandom `long` values, each conforming to the given origin (inclusive) and bound (exclusive).
` https://developer.android.com/reference/java/util/stream/LongStream` ` https://developer.android.com/reference/java/util/Random#longs(long,%20long,%20long)(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` ` https://developer.android.com/reference/java/util/Random#next(int)(int bits) `

Generates the next pseudorandom number.
` boolean` ` https://developer.android.com/reference/java/util/Random#nextBoolean()() `

Returns the next pseudorandom, uniformly distributed `boolean` value from this random number generator's sequence.
` void` ` https://developer.android.com/reference/java/util/Random#nextBytes(byte[])(byte[] bytes) `

Generates random bytes and places them into a user-supplied byte array.
` double` ` https://developer.android.com/reference/java/util/Random#nextDouble()() `

Returns the next pseudorandom, uniformly distributed `double` value between `0.0` and `1.0` from this random number generator's sequence.
` float` ` https://developer.android.com/reference/java/util/Random#nextFloat()() `

Returns the next pseudorandom, uniformly distributed `float` value between `0.0` and `1.0` from this random number generator's sequence.
` double` ` https://developer.android.com/reference/java/util/Random#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` ` https://developer.android.com/reference/java/util/Random#nextInt()() `

Returns the next pseudorandom, uniformly distributed `int` value from this random number generator's sequence.
` int` ` https://developer.android.com/reference/java/util/Random#nextInt(int)(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` ` https://developer.android.com/reference/java/util/Random#nextLong()() `

Returns the next pseudorandom, uniformly distributed `long` value from this random number generator's sequence.
` void` ` https://developer.android.com/reference/java/util/Random#setSeed(long)(long seed) `

Sets or updates the seed of this random number generator using the provided `long` seed value (optional operation).
From class ` https://developer.android.com/reference/java/lang/Object ` ` https://developer.android.com/reference/java/lang/Object` ` https://developer.android.com/reference/java/lang/Object#clone()() `

Creates and returns a copy of this object.
` boolean` ` https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj) `

Indicates whether some other object is "equal to" this one.
` void` ` https://developer.android.com/reference/java/lang/Object#finalize()() `

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.
` final https://developer.android.com/reference/java/lang/Class<?>` ` https://developer.android.com/reference/java/lang/Object#getClass()() `

Returns the runtime class of this `Object`.
` int` ` https://developer.android.com/reference/java/lang/Object#hashCode()() `

Returns a hash code value for the object.
` final void` ` https://developer.android.com/reference/java/lang/Object#notify()() `

Wakes up a single thread that is waiting on this object's monitor.
` final void` ` https://developer.android.com/reference/java/lang/Object#notifyAll()() `

Wakes up all threads that are waiting on this object's monitor.
` https://developer.android.com/reference/java/lang/String` ` https://developer.android.com/reference/java/lang/Object#toString()() `

Returns a string representation of the object.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(long timeoutMillis, int nanos) `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait(long)(long timeoutMillis) `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait()() `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*.
From interface ` https://developer.android.com/reference/java/util/random/RandomGenerator ` ` default https://developer.android.com/reference/java/util/stream/DoubleStream` ` https://developer.android.com/reference/java/util/random/RandomGenerator#doubles(long,%20double,%20double)(long streamSize, double randomNumberOrigin, double randomNumberBound) `

Returns a stream producing the given `streamSize` number of pseudorandomly chosen `double` values, where each value is between the specified origin (inclusive) and the specified bound (exclusive).
` default https://developer.android.com/reference/java/util/stream/DoubleStream` ` https://developer.android.com/reference/java/util/random/RandomGenerator#doubles(long)(long streamSize) `

Returns a stream producing the given `streamSize` number of pseudorandomly chosen `double` values.
` default https://developer.android.com/reference/java/util/stream/DoubleStream` ` https://developer.android.com/reference/java/util/random/RandomGenerator#doubles()() `

Returns an effectively unlimited stream of pseudorandomly chosen `double` values.
` default https://developer.android.com/reference/java/util/stream/DoubleStream` ` https://developer.android.com/reference/java/util/random/RandomGenerator#doubles(double,%20double)(double randomNumberOrigin, double randomNumberBound) `

Returns an effectively unlimited stream of pseudorandomly chosen `double` values, where each value is between the specified origin (inclusive) and the specified bound (exclusive).
` default https://developer.android.com/reference/java/util/stream/DoubleStream` ` https://developer.android.com/reference/java/util/random/RandomGenerator#equiDoubles(double,%20double,%20boolean,%20boolean)(double left, double right, boolean isLeftIncluded, boolean isRightIncluded) `

Returns an effectively unlimited stream of pseudorandomly chosen `double` values, where each value is between the specified `left` boundary and the specified `right` boundary.
` static https://developer.android.com/reference/java/util/random/RandomGenerator` ` https://developer.android.com/reference/java/util/random/RandomGenerator#getDefault()() `

Returns a `https://developer.android.com/reference/java/util/random/RandomGenerator` meeting the minimal requirement of having an [algorithm](https://developer.android.com/reference/java/util/concurrent/package-summary#algorithms) whose state bits are greater than or equal 64.
` default https://developer.android.com/reference/java/util/stream/IntStream` ` https://developer.android.com/reference/java/util/random/RandomGenerator#ints(long)(long streamSize) `

Returns a stream producing the given `streamSize` number of pseudorandomly chosen `int` values.
` default https://developer.android.com/reference/java/util/stream/IntStream` ` https://developer.android.com/reference/java/util/random/RandomGenerator#ints(int,%20int)(int randomNumberOrigin, int randomNumberBound) `

Returns an effectively unlimited stream of pseudorandomly chosen `int` values, where each value is between the specified origin (inclusive) and the specified bound (exclusive).
` default https://developer.android.com/reference/java/util/stream/IntStream` ` https://developer.android.com/reference/java/util/random/RandomGenerator#ints()() `

Returns an effectively unlimited stream of pseudorandomly chosen `int` values.
` default https://developer.android.com/reference/java/util/stream/IntStream` ` https://developer.android.com/reference/java/util/random/RandomGenerator#ints(long,%20int,%20int)(long streamSize, int randomNumberOrigin, int randomNumberBound) `

Returns a stream producing the given `streamSize` number of pseudorandomly chosen `int` values, where each value is between the specified origin (inclusive) and the specified bound (exclusive).
` default boolean` ` https://developer.android.com/reference/java/util/random/RandomGenerator#isDeprecated()() `

Return true if the implementation of RandomGenerator (algorithm) has been marked for deprecation.
` default https://developer.android.com/reference/java/util/stream/LongStream` ` https://developer.android.com/reference/java/util/random/RandomGenerator#longs(long)(long streamSize) `

Returns a stream producing the given `streamSize` number of pseudorandomly chosen `long` values.
` default https://developer.android.com/reference/java/util/stream/LongStream` ` https://developer.android.com/reference/java/util/random/RandomGenerator#longs()() `

Returns an effectively unlimited stream of pseudorandomly chosen `long` values.
` default https://developer.android.com/reference/java/util/stream/LongStream` ` https://developer.android.com/reference/java/util/random/RandomGenerator#longs(long,%20long)(long randomNumberOrigin, long randomNumberBound) `

Returns an effectively unlimited stream of pseudorandomly chosen `long` values, where each value is between the specified origin (inclusive) and the specified bound (exclusive).
` default https://developer.android.com/reference/java/util/stream/LongStream` ` https://developer.android.com/reference/java/util/random/RandomGenerator#longs(long,%20long,%20long)(long streamSize, long randomNumberOrigin, long randomNumberBound) `

Returns a stream producing the given `streamSize` number of pseudorandomly chosen `long` values, where each value is between the specified origin (inclusive) and the specified bound (exclusive).
` default boolean` ` https://developer.android.com/reference/java/util/random/RandomGenerator#nextBoolean()() `

Returns a pseudorandomly chosen `boolean` value.
` default void` ` https://developer.android.com/reference/java/util/random/RandomGenerator#nextBytes(byte[])(byte[] bytes) `

Fills a user-supplied byte array with generated byte values pseudorandomly chosen uniformly from the range of values between -128 (inclusive) and 127 (inclusive).
` default double` ` https://developer.android.com/reference/java/util/random/RandomGenerator#nextDouble()() `

Returns a pseudorandom `double` value between zero (inclusive) and one (exclusive).
` default double` ` https://developer.android.com/reference/java/util/random/RandomGenerator#nextDouble(double)(double bound) `

Returns a pseudorandomly chosen `double` value between zero (inclusive) and the specified bound (exclusive).
` default double` ` https://developer.android.com/reference/java/util/random/RandomGenerator#nextDouble(double,%20double)(double origin, double bound) `

Returns a pseudorandomly chosen `double` value between the specified origin (inclusive) and the specified bound (exclusive).
` default double` ` https://developer.android.com/reference/java/util/random/RandomGenerator#nextExponential()() `

Returns a nonnegative `double` value pseudorandomly chosen from an exponential distribution whose mean is 1.
` default float` ` https://developer.android.com/reference/java/util/random/RandomGenerator#nextFloat(float,%20float)(float origin, float bound) `

Returns a pseudorandomly chosen `float` value between the specified origin (inclusive) and the specified bound (exclusive).
` default float` ` https://developer.android.com/reference/java/util/random/RandomGenerator#nextFloat()() `

Returns a pseudorandom `float` value between zero (inclusive) and one (exclusive).
` default float` ` https://developer.android.com/reference/java/util/random/RandomGenerator#nextFloat(float)(float bound) `

Returns a pseudorandomly chosen `float` value between zero (inclusive) and the specified bound (exclusive).
` default double` ` https://developer.android.com/reference/java/util/random/RandomGenerator#nextGaussian(double,%20double)(double mean, double stddev) `

Returns a `double` value pseudorandomly chosen from a Gaussian (normal) distribution with a mean and standard deviation specified by the arguments.
` default double` ` https://developer.android.com/reference/java/util/random/RandomGenerator#nextGaussian()() `

Returns a `double` value pseudorandomly chosen from a Gaussian (normal) distribution whose mean is 0 and whose standard deviation is 1.
` default int` ` https://developer.android.com/reference/java/util/random/RandomGenerator#nextInt(int,%20int)(int origin, int bound) `

Returns a pseudorandomly chosen `int` value between the specified origin (inclusive) and the specified bound (exclusive).
` default int` ` https://developer.android.com/reference/java/util/random/RandomGenerator#nextInt()() `

Returns a pseudorandomly chosen `int` value.
` default int` ` https://developer.android.com/reference/java/util/random/RandomGenerator#nextInt(int)(int bound) `

Returns a pseudorandomly chosen `int` value between zero (inclusive) and the specified bound (exclusive).
` default long` ` https://developer.android.com/reference/java/util/random/RandomGenerator#nextLong(long,%20long)(long origin, long bound) `

Returns a pseudorandomly chosen `long` value between the specified origin (inclusive) and the specified bound (exclusive).
` default long` ` https://developer.android.com/reference/java/util/random/RandomGenerator#nextLong(long)(long bound) `

Returns a pseudorandomly chosen `long` value between zero (inclusive) and the specified bound (exclusive).
` abstract long` ` https://developer.android.com/reference/java/util/random/RandomGenerator#nextLong()() `

Returns a pseudorandomly chosen `long` value.
` static https://developer.android.com/reference/java/util/random/RandomGenerator` ` https://developer.android.com/reference/java/util/random/RandomGenerator#of(java.lang.String)(https://developer.android.com/reference/java/lang/String name) `

Returns an instance of `https://developer.android.com/reference/java/util/random/RandomGenerator` that utilizes the `name` [algorithm](https://developer.android.com/reference/java/util/concurrent/package-summary#algorithms).

## Public methods

### current

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static ThreadLocalRandom current ()
```

Returns the current thread's `ThreadLocalRandom` object. Methods of this object should be called only by the current thread, not by other threads.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/concurrent/ThreadLocalRandom` | the current thread's `ThreadLocalRandom` <br /> |

### doubles

Added in [API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

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

<br />

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

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/stream/DoubleStream` | a stream of pseudorandom `double` values, each with the given origin (inclusive) and bound (exclusive) <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` |   |

### doubles

Added in [API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public DoubleStream doubles (long streamSize)
```

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

A pseudorandom `double` value is generated as if it's the result of calling the method `https://developer.android.com/reference/java/util/Random#nextDouble()`.

<br />

| Parameters ||
|---|---|
| `streamSize` | `long`: the number of values to generate <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/stream/DoubleStream` | a stream of `double` values <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` |   |

### doubles

Added in [API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public DoubleStream doubles ()
```

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

A pseudorandom `double` value is generated as if it's the result of calling the method `https://developer.android.com/reference/java/util/Random#nextDouble()`.

<br />

##### Implementation Note:

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

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/stream/DoubleStream` | a stream of pseudorandom `double` values <br /> |

### doubles

Added in [API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

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

<br />

##### 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 <br /> |
| `randomNumberBound` | `double`: the bound (exclusive) of each random value <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/stream/DoubleStream` | a stream of pseudorandom `double` values, each with the given origin (inclusive) and bound (exclusive) <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` |   |

### ints

Added in [API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public IntStream ints (long streamSize)
```

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

A pseudorandom `int` value is generated as if it's the result of calling the method `https://developer.android.com/reference/java/util/Random#nextInt()`.

<br />

| Parameters ||
|---|---|
| `streamSize` | `long`: the number of values to generate <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/stream/IntStream` | a stream of pseudorandom `int` values <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` |   |

### ints

Added in [API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

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

A pseudorandom `int` value is generated as if it's the result of calling the following method with the origin and bound:

    int nextInt(int origin, int bound) {
      int n = bound - origin;
      if (n > 0) {
        return nextInt(n) + origin;
      }
      else {  // range not representable as int
        int r;
        do {
          r = nextInt();
        } while (r < origin || r >= bound);
        return r;
      }
    }

<br />

<br />

##### 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 <br /> |
| `randomNumberBound` | `int`: the bound (exclusive) of each random value <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/stream/IntStream` | a stream of pseudorandom `int` values, each with the given origin (inclusive) and bound (exclusive) <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` |   |

### ints

Added in [API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public IntStream ints ()
```

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

A pseudorandom `int` value is generated as if it's the result of calling the method `https://developer.android.com/reference/java/util/Random#nextInt()`.

<br />

##### Implementation Note:

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

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/stream/IntStream` | a stream of pseudorandom `int` values <br /> |

### ints

Added in [API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

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

A pseudorandom `int` value is generated as if it's the result of calling the following method with the origin and bound:

    int nextInt(int origin, int bound) {
      int n = bound - origin;
      if (n > 0) {
        return nextInt(n) + origin;
      }
      else {  // range not representable as int
        int r;
        do {
          r = nextInt();
        } while (r < origin || r >= bound);
        return r;
      }
    }

<br />

<br />

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

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/stream/IntStream` | a stream of pseudorandom `int` values, each with the given origin (inclusive) and bound (exclusive) <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` |   |

### longs

Added in [API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public LongStream longs (long streamSize)
```

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

A pseudorandom `long` value is generated as if it's the result of calling the method `https://developer.android.com/reference/java/util/Random#nextLong()`.

<br />

| Parameters ||
|---|---|
| `streamSize` | `long`: the number of values to generate <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/stream/LongStream` | a stream of pseudorandom `long` values <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` |   |

### longs

Added in [API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public LongStream longs ()
```

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

A pseudorandom `long` value is generated as if it's the result of calling the method `https://developer.android.com/reference/java/util/Random#nextLong()`.

<br />

##### Implementation Note:

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

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/stream/LongStream` | a stream of pseudorandom `long` values <br /> |

### longs

Added in [API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

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

A pseudorandom `long` value is generated as if it's the result of calling the following method with the origin and bound:

    long nextLong(long origin, long bound) {
      long r = nextLong();
      long n = bound - origin, m = n - 1;
      if ((n & m) == 0L)  // power of two
        r = (r & m) + origin;
      else if (n > 0L) {  // reject over-represented candidates
        for (long u = r >>> 1;            // ensure nonnegative
             u + m - (r = u % n) < 0L;    // rejection check
             u = nextLong() >>> 1) // retry
            ;
        r += origin;
      }
      else {              // range not representable as long
        while (r < origin || r >= bound)
          r = nextLong();
      }
      return r;
    }

<br />

<br />

##### 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 <br /> |
| `randomNumberBound` | `long`: the bound (exclusive) of each random value <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/stream/LongStream` | a stream of pseudorandom `long` values, each with the given origin (inclusive) and bound (exclusive) <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` |   |

### longs

Added in [API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

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

A pseudorandom `long` value is generated as if it's the result of calling the following method with the origin and bound:

    long nextLong(long origin, long bound) {
      long r = nextLong();
      long n = bound - origin, m = n - 1;
      if ((n & m) == 0L)  // power of two
        r = (r & m) + origin;
      else if (n > 0L) {  // reject over-represented candidates
        for (long u = r >>> 1;            // ensure nonnegative
             u + m - (r = u % n) < 0L;    // rejection check
             u = nextLong() >>> 1) // retry
            ;
        r += origin;
      }
      else {              // range not representable as long
        while (r < origin || r >= bound)
          r = nextLong();
      }
      return r;
    }

<br />

<br />

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

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/stream/LongStream` | a stream of pseudorandom `long` values, each with the given origin (inclusive) and bound (exclusive) <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` |   |

### nextBoolean

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean nextBoolean ()
```

Returns the next pseudorandom, uniformly distributed `boolean` value from this random number generator's sequence. The general contract of `nextBoolean` is that one `boolean` value is pseudorandomly generated and returned. The values `true` and `false` are produced with (approximately) equal probability.

<br />

| Returns ||
|---|---|
| `boolean` | the next pseudorandom, uniformly distributed `boolean` value from this random number generator's sequence <br /> |

### nextDouble

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public double nextDouble ()
```

Returns the next pseudorandom, uniformly distributed `double` value between `0.0` and `1.0` from this random number generator's sequence.

The general contract of `nextDouble` is that one `double` value, chosen (approximately) uniformly from the range `0.0d` (inclusive) to `1.0d` (exclusive), is pseudorandomly generated and returned.

<br />

| Returns ||
|---|---|
| `double` | the next pseudorandom, uniformly distributed `double` value between `0.0` and `1.0` from this random number generator's sequence <br /> |

### nextDouble

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public double nextDouble (double bound)
```

<br />

<br />

##### Implementation Note:

- 

| Parameters ||
|---|---|
| `bound` | `double` <br /> |

| Returns ||
|---|---|
| `double` | <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` |   |

### nextDouble

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public double nextDouble (double origin, 
                double bound)
```

<br />

<br />

##### Implementation Note:

- 

| Parameters ||
|---|---|
| `origin` | `double` <br /> |
| `bound` | `double` <br /> |

| Returns ||
|---|---|
| `double` | <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` |   |

### nextFloat

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public float nextFloat (float origin, 
                float bound)
```

<br />

<br />

##### Implementation Note:

- 

| Parameters ||
|---|---|
| `origin` | `float` <br /> |
| `bound` | `float` <br /> |

| Returns ||
|---|---|
| `float` | <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` |   |

### nextFloat

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public float nextFloat ()
```

Returns the next pseudorandom, uniformly distributed `float` value between `0.0` and `1.0` from this random number generator's sequence.

The general contract of `nextFloat` is that one `float` value, chosen (approximately) uniformly from the range `0.0f` (inclusive) to `1.0f` (exclusive), is pseudorandomly generated and returned. All 2^24^ possible `float` values of the form *m x *2^-24^, where *m* is a positive integer less than 2^24^, are produced with (approximately) equal probability.

<br />

| Returns ||
|---|---|
| `float` | the next pseudorandom, uniformly distributed `float` value between `0.0f` and `1.0f` from this random number generator's sequence <br /> |

### nextFloat

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public float nextFloat (float bound)
```

<br />

<br />

##### Implementation Note:

- 

| Parameters ||
|---|---|
| `bound` | `float` <br /> |

| Returns ||
|---|---|
| `float` | <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` |   |

### nextInt

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int nextInt (int origin, 
                int bound)
```

<br />

<br />

| Parameters ||
|---|---|
| `origin` | `int` <br /> |
| `bound` | `int` <br /> |

| Returns ||
|---|---|
| `int` | <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` |   |

### nextInt

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int nextInt ()
```

Returns the next pseudorandom, uniformly distributed `int` value from this random number generator's sequence. The general contract of `nextInt` is that one `int` value is pseudorandomly generated and returned. All 2^32^ possible `int` values are produced with (approximately) equal probability.

<br />

| Returns ||
|---|---|
| `int` | the next pseudorandom, uniformly distributed `int` value from this random number generator's sequence <br /> |

### nextInt

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public 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. The general contract of `nextInt` is that one `int` value in the specified range is pseudorandomly generated and returned. All `bound` possible `int` values are produced with (approximately) equal probability.

<br />

| Parameters ||
|---|---|
| `bound` | `int`: the upper bound (exclusive). Must be positive. <br /> |

| Returns ||
|---|---|
| `int` | the next pseudorandom, uniformly distributed `int` value between zero (inclusive) and `bound` (exclusive) from this random number generator's sequence <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` |   |

### nextLong

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public long nextLong (long origin, 
                long bound)
```

<br />

<br />

| Parameters ||
|---|---|
| `origin` | `long` <br /> |
| `bound` | `long` <br /> |

| Returns ||
|---|---|
| `long` | <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` |   |

### nextLong

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public long nextLong (long bound)
```

<br />

<br />

| Parameters ||
|---|---|
| `bound` | `long` <br /> |

| Returns ||
|---|---|
| `long` | <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` |   |

### nextLong

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public long nextLong ()
```

Returns the next pseudorandom, uniformly distributed `long` value from this random number generator's sequence. The general contract of `nextLong` is that one `long` value is pseudorandomly generated and returned.

<br />

| Returns ||
|---|---|
| `long` | the next pseudorandom, uniformly distributed `long` value from this random number generator's sequence <br /> |

### setSeed

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void setSeed (long seed)
```

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

<br />

| Parameters ||
|---|---|
| `seed` | `long`: the seed value <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/UnsupportedOperationException` | always |

## Protected methods

### next

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
protected int next (int bits)
```

Generates a pseudorandom number with the indicated number of low-order bits. Because this class has no subclasses, this method cannot be invoked or overridden.

<br />

| Parameters ||
|---|---|
| `bits` | `int`: random bits <br /> |

| Returns ||
|---|---|
| `int` | the next pseudorandom value from this random number generator's sequence <br /> |