RandomGenerator
, RandomGenerator.StreamableGenerator
SplittableRandom
RandomGenerator
public static interface RandomGenerator.SplittableGenerator extends RandomGenerator.StreamableGenerator
Ideally, all RandomGenerator.SplittableGenerator
objects produced by recursive splitting from a single original 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 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 RandomGenerator.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.
RandomGenerator.ArbitrarilyJumpableGenerator, RandomGenerator.JumpableGenerator, RandomGenerator.LeapableGenerator, RandomGenerator.SplittableGenerator, RandomGenerator.StreamableGenerator
Modifier and Type | Method | Description |
---|---|---|
static RandomGenerator.SplittableGenerator |
of |
|
default Stream |
rngs() |
Returns an effectively unlimited stream of new pseudorandom number generators, each of which implements the RandomGenerator interface. |
default Stream |
rngs |
Returns a stream producing the given streamSize number of new pseudorandom number generators, each of which implements the RandomGenerator interface. |
RandomGenerator.SplittableGenerator |
split() |
Returns a new pseudorandom number generator, split off from this one, that implements the RandomGenerator and RandomGenerator.SplittableGenerator interfaces. |
RandomGenerator.SplittableGenerator |
split |
Returns a new pseudorandom number generator, split off from this one, that implements the RandomGenerator and RandomGenerator.SplittableGenerator interfaces. |
default Stream |
splits() |
Returns an effectively unlimited stream of new pseudorandom number generators, each of which implements the RandomGenerator.SplittableGenerator interface. |
Stream |
splits |
Returns a stream producing the given streamSize number of new pseudorandom number generators, each of which implements the RandomGenerator.SplittableGenerator interface. |
Stream |
splits |
Returns a stream producing the given streamSize number of new pseudorandom number generators, each of which implements the RandomGenerator.SplittableGenerator interface. |
Stream |
splits |
Returns an effectively unlimited stream of new pseudorandom number generators, each of which implements the RandomGenerator.SplittableGenerator interface. |
doubles, doubles, doubles, doubles, ints, ints, ints, ints, isDeprecated, longs, longs, longs, longs, nextBoolean, nextBytes, nextDouble, nextDouble, nextDouble, nextExponential, nextFloat, nextFloat, nextFloat, nextGaussian, nextGaussian, nextInt, nextInt, nextInt, nextLong, nextLong, nextLong
static RandomGenerator.SplittableGenerator of(String name)
name
- Name of random number generator algorithm
RandomGenerator.SplittableGenerator
NullPointerException
- if name is nullIllegalArgumentException
- if the named algorithm is not foundRandomGenerator.SplittableGenerator split()
RandomGenerator
and 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.
RandomGenerator
and RandomGenerator.SplittableGenerator
interfacesRandomGenerator.SplittableGenerator split(RandomGenerator.SplittableGenerator source)
RandomGenerator
and RandomGenerator.SplittableGenerator
interfaces.source
- a 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.RandomGenerator
and RandomGenerator.SplittableGenerator
interfacesNullPointerException
- if source is nulldefault Stream<RandomGenerator.SplittableGenerator> splits()
RandomGenerator.SplittableGenerator
interface. This pseudorandom number generator may be used as a source of pseudorandom bits used to initialize the state the new ones.
splits(this)
.splits
(Long.MAX_VALUE
).RandomGenerator.SplittableGenerator
objectsStream<RandomGenerator.SplittableGenerator> splits(long streamSize)
streamSize
number of new pseudorandom number generators, each of which implements the RandomGenerator.SplittableGenerator
interface. This pseudorandom number generator may be used as a source of pseudorandom bits used to initialize the state the new ones.
streamSize
- the number of values to generateRandomGenerator.SplittableGenerator
objectsIllegalArgumentException
- if streamSize
is less than zeroStream<RandomGenerator.SplittableGenerator> splits(RandomGenerator.SplittableGenerator source)
RandomGenerator.SplittableGenerator
interface.splits
(Long.MAX_VALUE
, source).source
- a 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.RandomGenerator.SplittableGenerator
objectsNullPointerException
- if source is nullStream<RandomGenerator.SplittableGenerator> splits(long streamSize, RandomGenerator.SplittableGenerator source)
streamSize
number of new pseudorandom number generators, each of which implements the RandomGenerator.SplittableGenerator
interface.streamSize
- the number of values to generatesource
- a 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.RandomGenerator.SplittableGenerator
objectsIllegalArgumentException
- if streamSize
is less than zeroNullPointerException
- if source is nulldefault Stream<RandomGenerator> rngs()
RandomGenerator
interface. Ideally the generators in the stream will appear to be statistically independent.rngs
in interface RandomGenerator.StreamableGenerator
splits
().RandomGenerator
interfacedefault Stream<RandomGenerator> rngs(long streamSize)
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.rngs
in interface RandomGenerator.StreamableGenerator
splits
(streamSize).streamSize
- the number of generators to generateRandomGenerator
interfaceIllegalArgumentException
- if streamSize
is less than zero
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/random/RandomGenerator.SplittableGenerator.html