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 RandomGenerator interface |
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 RandomGenerator interface |
| Exceptions | |
|---|---|
java.lang.IllegalArgumentException |
if streamSize is 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 RandomGenerator and SplittableGenerator interfaces |
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 SplittableGenerator instance 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 RandomGenerator and SplittableGenerator interfaces |
| 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 SplittableGenerator objects |
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 SplittableGenerator instance 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 SplittableGenerator objects |
| 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 SplittableGenerator objects |
| Exceptions | |
|---|---|
java.lang.IllegalArgumentException |
if streamSize is 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 SplittableGenerator instance 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 SplittableGenerator objects |
| Exceptions | |
|---|---|
java.lang.IllegalArgumentException |
if streamSize is less than zero |
java.lang.NullPointerException |
if source is null |