Java Reference
In-Depth Information
Generating Random Numbers
We have already used the
Random
class a little, but let's investigate this in more detail. The class
Random
enables you to create multiple random number generators that are independent of one another.
Each object of the class is a separate random number generator. Any
Random
object can generate
pseudo-random numbers of types
int
,
long
,
float
, or
double
. These numbers are created using an
algorithm that takes a 'seed' and 'grows' a sequence of numbers from it. Initializing the algorithm twice
with the same seed would produce the same sequence because the algorithm is deterministic.
The integer values generated will be uniformly distributed over the complete range for the type, and the
floating point values will be uniformly distributed over the range 0.0 to 1.0 for both types. You can also
generate numbers of type
double
with a
Gaussian
(or normal) distribution that has a mean of 0.0 and a
standard deviation of 1.0. This is the typical bell-shaped curve that represents the probability
distribution for many random events.
0.345
double
gaussian
23
int
0.769
double
997L
long
0.178f
float
An object of the class
Random
There are two constructors for a
Random
object. The default constructor will create an object that uses
the current time from your computer clock as the seed value for generating pseudo-random numbers.
The other constructor accepts an argument of type
long
that will be used as the seed.
Random lottery = new Random(); // Sequence not repeatable
Random repeatable = new Random(997L); // Repeatable sequence