Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Methods](https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator#inhmethods)

# RandomGenerator.SplittableGenerator

` public static interface RandomGenerator.SplittableGenerator `   
` implements https://developer.android.com/reference/java/util/random/RandomGenerator.StreamableGenerator `

|---|
| java.util.random.RandomGenerator.SplittableGenerator |

Known indirect subclasses [SplittableRandom](https://developer.android.com/reference/java/util/SplittableRandom) [SplittableRandom](https://developer.android.com/reference/java/util/SplittableRandom) A generator of uniform pseudorandom values (with period 2^64^) applicable for use in (among other contexts) isolated parallel computations that may generate subtasks.   

*** ** * ** ***

This interface is designed to provide a common protocol for objects that generate sequences of pseudorandom values and can be *split* into two objects (the original one and a new one) each of which obey that same protocol (and therefore can be recursively split indefinitely).

Ideally, all `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` objects produced by recursive splitting from a single original `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` object are statistically independent of one another and individually uniform. Therefore we would expect the set of values collectively generated by a set of such objects to have the same statistical properties as if the same quantity of values were generated by a single thread using a single `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` object. In practice, one must settle for some approximation to independence and uniformity.

Methods are provided to perform a single splitting operation and also to produce a stream of generators split off from the original (by either iterative or recursive splitting, or a combination).

Objects that implement `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` are typically not cryptographically secure. Consider instead using `https://developer.android.com/reference/java/security/SecureRandom` to get a cryptographically secure pseudo-random number generator for use by security-sensitive applications.

## Summary

| ### Public methods ||
|---|---|
| ` static https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` | ` https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator#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.SplittableGenerator` that utilizes the `name` [algorithm](https://developer.android.com/reference/java/util/random/package-summary#algorithms). |
| ` default https://developer.android.com/reference/java/util/stream/Stream<https://developer.android.com/reference/java/util/random/RandomGenerator>` | ` https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator#rngs(long)(long streamSize) ` Returns a stream producing the given `streamSize` number of new pseudorandom number generators, each of which implements the `https://developer.android.com/reference/java/util/random/RandomGenerator` interface. |
| ` default https://developer.android.com/reference/java/util/stream/Stream<https://developer.android.com/reference/java/util/random/RandomGenerator>` | ` https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator#rngs()() ` Returns an effectively unlimited stream of new pseudorandom number generators, each of which implements the `https://developer.android.com/reference/java/util/random/RandomGenerator` interface. |
| ` abstract https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` | ` https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator#split(java.util.random.RandomGenerator.SplittableGenerator)(https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator source) ` Returns a new pseudorandom number generator, split off from this one, that implements the `https://developer.android.com/reference/java/util/random/RandomGenerator` and `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` interfaces. |
| ` abstract https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` | ` https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator#split()() ` Returns a new pseudorandom number generator, split off from this one, that implements the `https://developer.android.com/reference/java/util/random/RandomGenerator` and `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` interfaces. |
| ` default https://developer.android.com/reference/java/util/stream/Stream<https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator>` | ` https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator#splits()() ` Returns an effectively unlimited stream of new pseudorandom number generators, each of which implements the `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` interface. |
| ` abstract https://developer.android.com/reference/java/util/stream/Stream<https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator>` | ` https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator#splits(long,%20java.util.random.RandomGenerator.SplittableGenerator)(long streamSize, https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator source) ` Returns a stream producing the given `streamSize` number of new pseudorandom number generators, each of which implements the `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` interface. |
| ` abstract https://developer.android.com/reference/java/util/stream/Stream<https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator>` | ` https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator#splits(long)(long streamSize) ` Returns a stream producing the given `streamSize` number of new pseudorandom number generators, each of which implements the `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` interface. |
| ` abstract https://developer.android.com/reference/java/util/stream/Stream<https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator>` | ` https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator#splits(java.util.random.RandomGenerator.SplittableGenerator)(https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator source) ` Returns an effectively unlimited stream of new pseudorandom number generators, each of which implements the `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` interface. |

### Inherited methods

From interface ` https://developer.android.com/reference/java/util/random/RandomGenerator.StreamableGenerator ` ` static https://developer.android.com/reference/java/util/random/RandomGenerator.StreamableGenerator` ` https://developer.android.com/reference/java/util/random/RandomGenerator.StreamableGenerator#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.StreamableGenerator` that utilizes the `name` [algorithm](https://developer.android.com/reference/java/util/random/package-summary#algorithms).
` default https://developer.android.com/reference/java/util/stream/Stream<https://developer.android.com/reference/java/util/random/RandomGenerator>` ` https://developer.android.com/reference/java/util/random/RandomGenerator.StreamableGenerator#rngs(long)(long streamSize) `

Returns an effectively unlimited stream of objects, each of which implements the `https://developer.android.com/reference/java/util/random/RandomGenerator` interface.
` abstract https://developer.android.com/reference/java/util/stream/Stream<https://developer.android.com/reference/java/util/random/RandomGenerator>` ` https://developer.android.com/reference/java/util/random/RandomGenerator.StreamableGenerator#rngs()() `

Returns an effectively unlimited stream of objects, each of which implements the `https://developer.android.com/reference/java/util/random/RandomGenerator` interface.
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/random/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/random/package-summary#algorithms).

## Public methods

### of

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

```
public static RandomGenerator.SplittableGenerator of (String name)
```

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

<br />

| Parameters ||
|---|---|
| `name` | `String`: Name of random number generator [algorithm](https://developer.android.com/reference/java/util/random/package-summary#algorithms) <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` | An instance of `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if the named algorithm is not found |
| `https://developer.android.com/reference/java/lang/NullPointerException` | if name is null |

### rngs

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

```
public Stream<RandomGenerator> rngs (long streamSize)
```

Returns a stream producing the given `streamSize` number of new pseudorandom number generators, each of which implements the `https://developer.android.com/reference/java/util/random/RandomGenerator` interface. Ideally the generators in the stream will appear to be statistically independent.

<br />

##### Implementation Requirements:

- The default implementation calls `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator#splits(long)`(streamSize).

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

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/stream/Stream<https://developer.android.com/reference/java/util/random/RandomGenerator>` | a stream of objects that implement the `https://developer.android.com/reference/java/util/random/RandomGenerator` interface <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if `streamSize` is less than zero |

### rngs

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

```
public Stream<RandomGenerator> rngs ()
```

Returns an effectively unlimited stream of new pseudorandom number generators, each of which implements the `https://developer.android.com/reference/java/util/random/RandomGenerator` interface. Ideally the generators in the stream will appear to be statistically independent.

<br />

##### Implementation Requirements:

- The default implementation calls `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator#splits()`().

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/stream/Stream<https://developer.android.com/reference/java/util/random/RandomGenerator>` | a stream of objects that implement the `https://developer.android.com/reference/java/util/random/RandomGenerator` interface <br /> |

### split

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

```
public abstract RandomGenerator.SplittableGenerator split (RandomGenerator.SplittableGenerator source)
```

Returns a new pseudorandom number generator, split off from this one, that implements the `https://developer.android.com/reference/java/util/random/RandomGenerator` and `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` interfaces.

<br />

| Parameters ||
|---|---|
| `source` | `RandomGenerator.SplittableGenerator`: a `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` instance to be used instead of this one as a source of pseudorandom bits used to initialize the state of the new ones. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` | an object that implements the `https://developer.android.com/reference/java/util/random/RandomGenerator` and `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` interfaces <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/NullPointerException` | if source is null |

### split

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

```
public abstract RandomGenerator.SplittableGenerator split ()
```

Returns a new pseudorandom number generator, split off from this one, that implements the `https://developer.android.com/reference/java/util/random/RandomGenerator` and `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` interfaces.

This pseudorandom number generator may be used as a source of pseudorandom bits used to initialize the state of the new one.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` | a new object that implements the `https://developer.android.com/reference/java/util/random/RandomGenerator` and `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` interfaces <br /> |

### splits

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

```
public Stream<RandomGenerator.SplittableGenerator> splits ()
```

Returns an effectively unlimited stream of new pseudorandom number generators, each of which implements the `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` interface.

This pseudorandom number generator may be used as a source of pseudorandom bits used to initialize the state the new ones.

<br />

##### Implementation Note:

- It is permitted to implement this method in a manner equivalent to `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator#splits(long)` (`https://developer.android.com/reference/java/lang/Long#MAX_VALUE`).

##### Implementation Requirements:

- The default implementation invokes `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator#splits(java.util.random.RandomGenerator.SplittableGenerator)`.

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/stream/Stream<https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator>` | a stream of `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` objects <br /> |

### splits

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

```
public abstract Stream<RandomGenerator.SplittableGenerator> splits (long streamSize, 
                RandomGenerator.SplittableGenerator source)
```

Returns a stream producing the given `streamSize` number of new pseudorandom number generators, each of which implements the `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` interface.

<br />

| Parameters ||
|---|---|
| `streamSize` | `long`: the number of values to generate <br /> |
| `source` | `RandomGenerator.SplittableGenerator`: a `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` instance to be used instead of this one as a source of pseudorandom bits used to initialize the state of the new ones. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/stream/Stream<https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator>` | a stream of `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` objects <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if `streamSize` is less than zero |
| `https://developer.android.com/reference/java/lang/NullPointerException` | if source is null |

### splits

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

```
public abstract Stream<RandomGenerator.SplittableGenerator> splits (long streamSize)
```

Returns a stream producing the given `streamSize` number of new pseudorandom number generators, each of which implements the `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` interface.

This pseudorandom number generator may be used as a source of pseudorandom bits used to initialize the state the new ones.

<br />

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

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/stream/Stream<https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator>` | a stream of `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` objects <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if `streamSize` is less than zero |

### splits

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

```
public abstract Stream<RandomGenerator.SplittableGenerator> splits (RandomGenerator.SplittableGenerator source)
```

Returns an effectively unlimited stream of new pseudorandom number generators, each of which implements the `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` interface.

<br />

##### Implementation Note:

- It is permitted to implement this method in a manner equivalent to `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator#splits(long,%20java.util.random.RandomGenerator.SplittableGenerator)` (`https://developer.android.com/reference/java/lang/Long#MAX_VALUE`, source).

| Parameters ||
|---|---|
| `source` | `RandomGenerator.SplittableGenerator`: a `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` instance to be used instead of this one as a source of pseudorandom bits used to initialize the state of the new ones. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/stream/Stream<https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator>` | a stream of `https://developer.android.com/reference/java/util/random/RandomGenerator.SplittableGenerator` objects <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/NullPointerException` | if source is null |