|
FlexDoc/Javadoc 2.0 Demo Java Doc |
Class SplittableRandom
java.util.SplittableRandom
All Implemented Interfaces:
public final class SplittableRandom
A generator of uniform pseudorandom values (with period 2
64)
applicable for use in (among other contexts) isolated parallel
computations that may generate subtasks. Class
SplittableRandom
supports methods for producing pseudorandom numbers of type
int,
long, and
double with similar usages as for class
Random but differs in the following ways:
- Series of generated values pass the DieHarder suite testing
independence and uniformity properties of random number generators.
(Most recently validated with version
3.31.1.) These tests validate only the methods for certain
types and ranges, but similar properties are expected to hold, at
least approximately, for others as well. The period
(length of any series of generated values before it repeats) is
264.
- Method split() constructs and returns a new
SplittableRandom instance that shares no mutable state with the
current instance. However, with very high probability, the
values collectively generated by the two objects have the same
statistical properties as if the same quantity of values were
generated by a single thread using a single
SplittableRandom object.
- Instances of SplittableRandom are not thread-safe.
They are designed to be split, not shared, across threads. For
example, a fork/join-style computation using random numbers might include a
construction of the form new
Subtask(aSplittableRandom.split()).fork().
- This class provides additional methods for generating random
streams, that employ the above techniques when used in
stream.parallel() mode.
Instances of SplittableRandom are not cryptographically
secure. Consider instead using SecureRandom
in security-sensitive applications. Additionally,
default-constructed instances do not use a cryptographically random
seed unless the system property
java.util.secureRandomSeed is set to true.
Since:
1.8
Author:
Guy Steele, Doug Lea
Nested classes/interfaces inherited from interface java.util.random. RandomGenerator |
|
Constructor Summary |
Creates a new SplittableRandom instance that is likely to
generate sequences of values that are statistically independent
of those of any other instances in the current program; and
may, and typically does, vary across program invocations.
|
Creates a new SplittableRandom instance using the specified
initial seed.
|
Method Summary |
|
Returns an effectively unlimited stream of pseudorandom
double values from this generator and/or one split from it; each value
is between zero (inclusive) and one (exclusive).
|
|
doubles(double randomNumberOrigin, double randomNumberBound)
Returns an effectively unlimited stream of pseudorandom
double values from this generator and/or one split from it; each value
conforms to the given origin (inclusive) and bound (exclusive).
|
|
Returns a stream producing the given streamSize number of
pseudorandom double values from this generator and/or one split
from it; each value is between zero (inclusive) and one (exclusive).
|
|
doubles(long streamSize, double randomNumberOrigin, double randomNumberBound)
Returns a stream producing the given streamSize number of
pseudorandom double values from this generator and/or one split
from it; each value conforms to the given origin (inclusive) and bound
(exclusive).
|
|
Returns an effectively unlimited stream of pseudorandom int
values from this generator and/or one split from it.
|
|
ints(int randomNumberOrigin, int randomNumberBound)
Returns an effectively unlimited stream of pseudorandom
int values from this generator and/or one split from it; each value
conforms to the given origin (inclusive) and bound (exclusive).
|
|
Returns a stream producing the given streamSize number
of pseudorandom int values from this generator and/or
one split from it.
|
|
ints(long streamSize, int randomNumberOrigin, int randomNumberBound)
Returns a stream producing the given streamSize number
of pseudorandom int values from this generator and/or one split
from it; each value conforms to the given origin (inclusive) and bound
(exclusive).
|
|
Returns an effectively unlimited stream of pseudorandom
long values from this generator and/or one split from it.
|
|
Returns a stream producing the given streamSize number
of pseudorandom long values from this generator and/or
one split from it.
|
|
longs(long randomNumberOrigin, long randomNumberBound)
Returns an effectively unlimited stream of pseudorandom
long values from this generator and/or one split from it; each value
conforms to the given origin (inclusive) and bound (exclusive).
|
|
longs(long streamSize, long randomNumberOrigin, long randomNumberBound)
Returns a stream producing the given streamSize number of
pseudorandom long values from this generator and/or one split
from it; each value conforms to the given origin (inclusive) and bound
(exclusive).
|
void |
Fills a user-supplied byte array with generated byte values
pseudorandomly chosen uniformly from the range of values between -128
(inclusive) and 127 (inclusive).
|
int |
Returns a pseudorandomly chosen int value.
|
long |
Returns a pseudorandomly chosen long value.
|
|
Constructs and returns a new SplittableRandom instance that
shares no mutable state with this instance.
|
|
|
|
|
|
|
|
|
|
|
Methods inherited from class java.lang. Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
|
getDefault, isDeprecated, nextBoolean, nextDouble, nextDouble, nextDouble, nextExponential, nextFloat, nextFloat, nextFloat, nextGaussian, nextGaussian, nextInt, nextInt, nextLong, nextLong, of |
public SplittableRandom |
(long seed) |
Creates a new SplittableRandom instance using the specified
initial seed. SplittableRandom instances created with the same
seed in the same program generate identical sequences of values.
Parameters:
seed - the initial seed
public SplittableRandom |
() |
Creates a new SplittableRandom instance that is likely to
generate sequences of values that are statistically independent
of those of any other instances in the current program; and
may, and typically does, vary across program invocations.
Constructs and returns a new SplittableRandom instance that
shares no mutable state with this instance. However, with very
high probability, the set of values collectively generated by
the two objects has the same statistical properties as if the
same quantity of values were generated by a single thread using
a single SplittableRandom object. Either or both of the two
objects may be further split using the
split() method,
and the same expected statistical properties apply to the
entire set of generators constructed by such recursive
splitting.
Specified by:
Returns:
the new SplittableRandom instance
Returns a pseudorandomly chosen int value.
Specified by:
Returns:
a pseudorandomly chosen int value
Returns a pseudorandomly chosen long value.
Specified by:
Returns:
a pseudorandomly chosen long value
public void nextBytes |
(byte[] bytes) |
Fills a user-supplied byte array with generated byte values
pseudorandomly chosen uniformly from the range of values between -128
(inclusive) and 127 (inclusive).
Specified by:
Parameters:
bytes - the byte array to fill with pseudorandom bytes
Throws:
Since:
10
Returns an effectively unlimited stream 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.
Specified by:
Returns:
Since:
17
Returns a stream producing the given
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.
Specified by:
Parameters:
streamSize - the number of values to generate
Returns:
Throws:
Since:
17
Returns an effectively unlimited stream of new pseudorandom number
generators, each of which implements the
RandomGenerator.SplittableGenerator
interface.
Specified by:
Parameters:
Returns:
Throws:
Since:
17
Returns a stream producing the given
streamSize number of new
pseudorandom number generators, each of which implements the
RandomGenerator.SplittableGenerator interface.
Specified by:
Parameters:
streamSize - the number of values to generate
Returns:
Throws:
Since:
17
Returns a stream producing the given
streamSize number
of pseudorandom
int values from this generator and/or
one split from it.
Specified by:
Parameters:
streamSize - the number of values to generate
Returns:
a stream of pseudorandom int values
Throws:
Returns an effectively unlimited stream of pseudorandom
int
values from this generator and/or one split from it.
Implementation Note:
This method is implemented to be equivalent to
ints(Long.MAX_VALUE).
Specified by:
Returns:
a stream of pseudorandom int values
|
(long streamSize, int randomNumberOrigin, int randomNumberBound) |
Returns a stream producing the given
streamSize number
of pseudorandom
int values from this generator and/or one split
from it; each value conforms to the given origin (inclusive) and bound
(exclusive).
Specified by:
Parameters:
streamSize - the number of values to generate
randomNumberOrigin - the origin (inclusive) of each random value
randomNumberBound - the bound (exclusive) of each random value
Returns:
a stream of pseudorandom int values,
each with the given origin (inclusive) and bound (exclusive)
Throws:
IllegalArgumentException - if
streamSize is
less than zero, or
randomNumberOrigin
is greater than or equal to
randomNumberBound
|
(int randomNumberOrigin, int randomNumberBound) |
Returns an effectively unlimited stream of pseudorandom
int values from this generator and/or one split from it; each value
conforms to the given origin (inclusive) and bound (exclusive).
Implementation Note:
This method is implemented to be equivalent to
ints(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound).
Specified by:
Parameters:
randomNumberOrigin - the origin (inclusive) of each random value
randomNumberBound - the bound (exclusive) of each random value
Returns:
a stream of pseudorandom int values,
each with the given origin (inclusive) and bound (exclusive)
Throws:
Returns a stream producing the given
streamSize number
of pseudorandom
long values from this generator and/or
one split from it.
Specified by:
Parameters:
streamSize - the number of values to generate
Returns:
a stream of pseudorandom long values
Throws:
Returns an effectively unlimited stream of pseudorandom
long values from this generator and/or one split from it.
Implementation Note:
This method is implemented to be equivalent to
longs(Long.MAX_VALUE).
Specified by:
Returns:
a stream of pseudorandom long values
|
(long streamSize, long randomNumberOrigin, long randomNumberBound) |
Returns a stream producing the given
streamSize number of
pseudorandom
long values from this generator and/or one split
from it; each value conforms to the given origin (inclusive) and bound
(exclusive).
Specified by:
Parameters:
streamSize - the number of values to generate
randomNumberOrigin - the origin (inclusive) of each random value
randomNumberBound - the bound (exclusive) of each random value
Returns:
a stream of pseudorandom long values,
each with the given origin (inclusive) and bound (exclusive)
Throws:
IllegalArgumentException - if
streamSize is
less than zero, or
randomNumberOrigin
is greater than or equal to
randomNumberBound
|
(long randomNumberOrigin, long randomNumberBound) |
Returns an effectively unlimited stream of pseudorandom
long values from this generator and/or one split from it; each value
conforms to the given origin (inclusive) and bound (exclusive).
Implementation Note:
This method is implemented to be equivalent to
longs(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound).
Specified by:
Parameters:
randomNumberOrigin - the origin (inclusive) of each random value
randomNumberBound - the bound (exclusive) of each random value
Returns:
a stream of pseudorandom long values,
each with the given origin (inclusive) and bound (exclusive)
Throws:
Returns a stream producing the given
streamSize number of
pseudorandom
double values from this generator and/or one split
from it; each value is between zero (inclusive) and one (exclusive).
Specified by:
Parameters:
streamSize - the number of values to generate
Returns:
a stream of double values
Throws:
Returns an effectively unlimited stream of pseudorandom
double values from this generator and/or one split from it; each value
is between zero (inclusive) and one (exclusive).
Implementation Note:
This method is implemented to be equivalent to
doubles(Long.MAX_VALUE).
Specified by:
Returns:
a stream of pseudorandom double values
|
(long streamSize, double randomNumberOrigin, double randomNumberBound) |
Returns a stream producing the given
streamSize number of
pseudorandom
double values from this generator and/or one split
from it; each value conforms to the given origin (inclusive) and bound
(exclusive).
Specified by:
Parameters:
streamSize - the number of values to generate
randomNumberOrigin - the origin (inclusive) of each random value
randomNumberBound - the bound (exclusive) of each random value
Returns:
a stream of pseudorandom double values,
each with the given origin (inclusive) and bound (exclusive)
Throws:
IllegalArgumentException - if
streamSize is
less than zero, or
randomNumberOrigin
is greater than or equal to
randomNumberBound
|
(double randomNumberOrigin, double randomNumberBound) |
Returns an effectively unlimited stream of pseudorandom
double values from this generator and/or one split from it; each value
conforms to the given origin (inclusive) and bound (exclusive).
Implementation Note:
This method is implemented to be equivalent to
doubles(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound).
Specified by:
Parameters:
randomNumberOrigin - the origin (inclusive) of each random value
randomNumberBound - the bound (exclusive) of each random value
Returns:
a stream of pseudorandom double values,
each with the given origin (inclusive) and bound (exclusive)
Throws:
|
FlexDoc/Javadoc 2.0 Demo Java Doc |
FlexDoc/Javadoc is a template-driven programming tool for rapid development of any Javadoc-based Java API documentation generators (i.e. doclets). If you need to customize your Javadoc without writing a full-blown doclet from scratch,
FlexDoc/Javadoc may be the only tool able to help you! Find out more at
www.flexdoc.xyz