SplittableGenerator
interface SplittableGenerator : RandomGenerator.StreamableGenerator
| java.util.random.RandomGenerator.SplittableGenerator | 
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 SplittableGenerator objects produced by recursive splitting from a single original 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 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 SplittableGenerator are typically not cryptographically secure. Consider instead using SecureRandom to get a cryptographically secure pseudo-random number generator for use by security-sensitive applications.
Summary
| Public methods | |
|---|---|
| open static RandomGenerator.SplittableGenerator! | Returns an instance of  | 
| open Stream<RandomGenerator!>! | rngs()Returns an effectively unlimited stream of new pseudorandom number generators, each of which implements the  | 
| open Stream<RandomGenerator!>! | Returns a stream producing the given  | 
| abstract RandomGenerator.SplittableGenerator! | split()Returns a new pseudorandom number generator, split off from this one, that implements the  | 
| abstract RandomGenerator.SplittableGenerator! | split(source: RandomGenerator.SplittableGenerator!)Returns a new pseudorandom number generator, split off from this one, that implements the  | 
| open Stream<RandomGenerator.SplittableGenerator!>! | splits()Returns an effectively unlimited stream of new pseudorandom number generators, each of which implements the  | 
| abstract Stream<RandomGenerator.SplittableGenerator!>! | splits(source: RandomGenerator.SplittableGenerator!)Returns an effectively unlimited stream of new pseudorandom number generators, each of which implements the  | 
| abstract Stream<RandomGenerator.SplittableGenerator!>! | Returns a stream producing the given  | 
| abstract Stream<RandomGenerator.SplittableGenerator!>! | splits(streamSize: Long, source: RandomGenerator.SplittableGenerator!)Returns a stream producing the given  | 
Public methods
of
open static fun of(name: String!): RandomGenerator.SplittableGenerator!
Returns an instance of SplittableGenerator that utilizes the name algorithm.
| Parameters | |
|---|---|
| name | String!: Name of random number generator algorithm | 
| Return | |
|---|---|
| RandomGenerator.SplittableGenerator! | An instance of SplittableGenerator | 
| Exceptions | |
|---|---|
| java.lang.NullPointerException | if name is null | 
| java.lang.IllegalArgumentException | if the named algorithm is not found | 
rngs
open fun rngs(): Stream<RandomGenerator!>!
Returns an effectively unlimited stream of new pseudorandom number generators, each of which implements the RandomGenerator interface. Ideally the generators in the stream will appear to be statistically independent.
| Return | |
|---|---|
| Stream<RandomGenerator!>! | a stream of objects that implement the RandomGeneratorinterface | 
rngs
open fun rngs(streamSize: Long): Stream<RandomGenerator!>!
Returns a stream producing the given streamSize number of new pseudorandom number generators, each of which implements the RandomGenerator interface. Ideally the generators in the stream will appear to be statistically independent.
| Parameters | |
|---|---|
| streamSize | Long: the number of generators to generate | 
| Return | |
|---|---|
| Stream<RandomGenerator!>! | a stream of objects that implement the RandomGeneratorinterface | 
| Exceptions | |
|---|---|
| java.lang.IllegalArgumentException | if streamSizeis less than zero | 
split
abstract fun split(): RandomGenerator.SplittableGenerator!
Returns a new pseudorandom number generator, split off from this one, that implements the RandomGenerator and SplittableGenerator interfaces. 
This pseudorandom number generator may be used as a source of pseudorandom bits used to initialize the state of the new one.
| Return | |
|---|---|
| RandomGenerator.SplittableGenerator! | a new object that implements the RandomGeneratorandSplittableGeneratorinterfaces | 
split
abstract fun split(source: RandomGenerator.SplittableGenerator!): RandomGenerator.SplittableGenerator!
Returns a new pseudorandom number generator, split off from this one, that implements the RandomGenerator and SplittableGenerator interfaces.
| Parameters | |
|---|---|
| source | RandomGenerator.SplittableGenerator!: a SplittableGeneratorinstance to be used instead of this one as a source of pseudorandom bits used to initialize the state of the new ones. | 
| Return | |
|---|---|
| RandomGenerator.SplittableGenerator! | an object that implements the RandomGeneratorandSplittableGeneratorinterfaces | 
| Exceptions | |
|---|---|
| java.lang.NullPointerException | if source is null | 
splits
open fun splits(): Stream<RandomGenerator.SplittableGenerator!>!
Returns an effectively unlimited stream of new pseudorandom number generators, each of which implements the SplittableGenerator interface. 
This pseudorandom number generator may be used as a source of pseudorandom bits used to initialize the state the new ones.
| Return | |
|---|---|
| Stream<RandomGenerator.SplittableGenerator!>! | a stream of SplittableGeneratorobjects | 
splits
abstract fun splits(source: RandomGenerator.SplittableGenerator!): Stream<RandomGenerator.SplittableGenerator!>!
Returns an effectively unlimited stream of new pseudorandom number generators, each of which implements the SplittableGenerator interface.
| Parameters | |
|---|---|
| source | RandomGenerator.SplittableGenerator!: a SplittableGeneratorinstance to be used instead of this one as a source of pseudorandom bits used to initialize the state of the new ones. | 
| Return | |
|---|---|
| Stream<RandomGenerator.SplittableGenerator!>! | a stream of SplittableGeneratorobjects | 
| Exceptions | |
|---|---|
| java.lang.NullPointerException | if source is null | 
splits
abstract fun splits(streamSize: Long): Stream<RandomGenerator.SplittableGenerator!>!
Returns a stream producing the given streamSize number of new pseudorandom number generators, each of which implements the SplittableGenerator interface. 
This pseudorandom number generator may be used as a source of pseudorandom bits used to initialize the state the new ones.
| Parameters | |
|---|---|
| streamSize | Long: the number of values to generate | 
| Return | |
|---|---|
| Stream<RandomGenerator.SplittableGenerator!>! | a stream of SplittableGeneratorobjects | 
| Exceptions | |
|---|---|
| java.lang.IllegalArgumentException | if streamSizeis less than zero | 
splits
abstract fun splits(
streamSize: Long,
source: RandomGenerator.SplittableGenerator!
): Stream<RandomGenerator.SplittableGenerator!>!
Returns a stream producing the given streamSize number of new pseudorandom number generators, each of which implements the SplittableGenerator interface.
| Parameters | |
|---|---|
| streamSize | Long: the number of values to generate | 
| source | RandomGenerator.SplittableGenerator!: a SplittableGeneratorinstance to be used instead of this one as a source of pseudorandom bits used to initialize the state of the new ones. | 
| Return | |
|---|---|
| Stream<RandomGenerator.SplittableGenerator!>! | a stream of SplittableGeneratorobjects | 
| Exceptions | |
|---|---|
| java.lang.IllegalArgumentException | if streamSizeis less than zero | 
| java.lang.NullPointerException | if source is null | 
