RandomGenerator.SplittableGenerator
public
static
interface
RandomGenerator.SplittableGenerator
implements
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 | |
---|---|
static
RandomGenerator.SplittableGenerator
|
of(String name)
Returns an instance of |
default
Stream<RandomGenerator>
|
rngs(long streamSize)
Returns a stream producing the given |
default
Stream<RandomGenerator>
|
rngs()
Returns an effectively unlimited stream of new pseudorandom number
generators, each of which implements the |
abstract
RandomGenerator.SplittableGenerator
|
split(RandomGenerator.SplittableGenerator source)
Returns a new pseudorandom number generator, split off from this one,
that implements the |
abstract
RandomGenerator.SplittableGenerator
|
split()
Returns a new pseudorandom number generator, split off from this one,
that implements the |
default
Stream<RandomGenerator.SplittableGenerator>
|
splits()
Returns an effectively unlimited stream of new pseudorandom number
generators, each of which implements the |
abstract
Stream<RandomGenerator.SplittableGenerator>
|
splits(long streamSize, RandomGenerator.SplittableGenerator source)
Returns a stream producing the given |
abstract
Stream<RandomGenerator.SplittableGenerator>
|
splits(long streamSize)
Returns a stream producing the given |
abstract
Stream<RandomGenerator.SplittableGenerator>
|
splits(RandomGenerator.SplittableGenerator source)
Returns an effectively unlimited stream of new pseudorandom number
generators, each of which implements the |
Inherited methods | |
---|---|
Public methods
of
public static RandomGenerator.SplittableGenerator of (String name)
Returns an instance of SplittableGenerator
that utilizes the
name
algorithm.
Parameters | |
---|---|
name |
String : Name of random number generator
algorithm |
Returns | |
---|---|
RandomGenerator.SplittableGenerator |
An instance of SplittableGenerator |
Throws | |
---|---|
NullPointerException |
if name is null |
IllegalArgumentException |
if the named algorithm is not found |
rngs
public Stream<RandomGenerator> rngs (long streamSize)
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.
Implementation Requirements:
- The default implementation calls
splits
(streamSize).
Parameters | |
---|---|
streamSize |
long : the number of generators to generate |
Returns | |
---|---|
Stream<RandomGenerator> |
a stream of objects that implement the RandomGenerator interface |
Throws | |
---|---|
IllegalArgumentException |
if streamSize is
less than zero |
rngs
public Stream<RandomGenerator> rngs ()
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.
Implementation Requirements:
- The default implementation calls
splits
().
Returns | |
---|---|
Stream<RandomGenerator> |
a stream of objects that implement the RandomGenerator interface |
split
public abstract RandomGenerator.SplittableGenerator split (RandomGenerator.SplittableGenerator source)
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. |
Returns | |
---|---|
RandomGenerator.SplittableGenerator |
an object that implements the RandomGenerator and
SplittableGenerator interfaces |
Throws | |
---|---|
NullPointerException |
if source is null |
split
public abstract RandomGenerator.SplittableGenerator split ()
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.
Returns | |
---|---|
RandomGenerator.SplittableGenerator |
a new object that implements the RandomGenerator and
SplittableGenerator interfaces |
splits
public Stream<RandomGenerator.SplittableGenerator> splits ()
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.
Implementation Note:
- It is permitted to implement this method in a manner
equivalent to
splits
(Long.MAX_VALUE
).
Implementation Requirements:
- The default implementation invokes
splits(this)
.
Returns | |
---|---|
Stream<RandomGenerator.SplittableGenerator> |
a stream of SplittableGenerator objects |
splits
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
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. |
Returns | |
---|---|
Stream<RandomGenerator.SplittableGenerator> |
a stream of SplittableGenerator objects |
Throws | |
---|---|
IllegalArgumentException |
if streamSize is
less than zero |
NullPointerException |
if source is null |
splits
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
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 |
Returns | |
---|---|
Stream<RandomGenerator.SplittableGenerator> |
a stream of SplittableGenerator objects |
Throws | |
---|---|
IllegalArgumentException |
if streamSize is
less than zero |
splits
public abstract Stream<RandomGenerator.SplittableGenerator> splits (RandomGenerator.SplittableGenerator source)
Returns an effectively unlimited stream of new pseudorandom number
generators, each of which implements the SplittableGenerator
interface.
Implementation Note:
- It is permitted to implement this method in a manner
equivalent to
splits
(Long.MAX_VALUE
, source).
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. |
Returns | |
---|---|
Stream<RandomGenerator.SplittableGenerator> |
a stream of SplittableGenerator objects |
Throws | |
---|---|
NullPointerException |
if source is null |