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!>! |
Returns a stream producing the given |
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!>! |
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(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(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,
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 |