public class Random extends Object implements Serializable
It is dangerous to seed Random
with the current time because
that value is more predictable to an attacker than the default seed.
This class is thread-safe.
SecureRandom
,
Serialized FormConstructor and Description |
---|
Random()
Constructs a random generator with an initial state that is
unlikely to be duplicated by a subsequent instantiation.
|
Random(long seed)
Construct a random generator with the given
seed as the
initial state. |
Modifier and Type | Method and Description |
---|---|
protected int |
next(int bits)
Returns a pseudo-random uniformly distributed
int value of
the number of bits specified by the argument bits as
described by Donald E. |
boolean |
nextBoolean()
Returns a pseudo-random uniformly distributed
boolean . |
void |
nextBytes(byte[] buf)
Fills
buf with random bytes. |
double |
nextDouble()
Returns a pseudo-random uniformly distributed
double
in the half-open range [0.0, 1.0). |
float |
nextFloat()
Returns a pseudo-random uniformly distributed
float
in the half-open range [0.0, 1.0). |
double |
nextGaussian()
Returns a pseudo-random (approximately) normally distributed
double with mean 0.0 and standard deviation 1.0. |
int |
nextInt()
Returns a pseudo-random uniformly distributed
int . |
int |
nextInt(int n)
Returns a pseudo-random uniformly distributed
int
in the half-open range [0, n). |
long |
nextLong()
Returns a pseudo-random uniformly distributed
long . |
void |
setSeed(long seed)
Modifies the seed using a linear congruential formula presented in The
Art of Computer Programming, Volume 2, Section 3.2.1.
|
public Random()
The initial state (that is, the seed) is partially based on the current time of day in milliseconds.
public Random(long seed)
seed
as the
initial state. Equivalent to Random r = new Random(); r.setSeed(seed);
.
This constructor is mainly useful for predictability in tests. The default constructor is likely to provide better randomness.
protected int next(int bits)
int
value of
the number of bits specified by the argument bits
as
described by Donald E. Knuth in The Art of Computer Programming,
Volume 2: Seminumerical Algorithms, section 3.2.1.
Most applications will want to use one of this class' convenience methods instead.
public boolean nextBoolean()
boolean
.public void nextBytes(byte[] buf)
buf
with random bytes.public double nextDouble()
double
in the half-open range [0.0, 1.0).public float nextFloat()
float
in the half-open range [0.0, 1.0).public double nextGaussian()
double
with mean 0.0 and standard deviation 1.0.
This method uses the polar method of G. E. P. Box, M.
E. Muller, and G. Marsaglia, as described by Donald E. Knuth in The
Art of Computer Programming, Volume 2: Seminumerical Algorithms,
section 3.4.1, subsection C, algorithm P.public int nextInt()
int
.public int nextInt(int n)
int
in the half-open range [0, n).public long nextLong()
long
.public void setSeed(long seed)