You need to generate better random numbers.

Construct a
`java.util.Random`

object (not just any old random
object) and call its `next*( )`

methods. These
methods include `nextBoolean( )`

,
`nextBytes( )`

(which fills the given array of bytes
with random values), `nextDouble( )`

,
`nextFloat( )`

, `nextInt( )`

,
`nextLong( )`

. Don’t be confused by the
capitalization of `Float`

,
`Double`

, etc. They return the
primitive types
`boolean`

, `float`

,
`double`

, etc., not the capitalized wrapper objects.
Clear enough? Maybe an example will help:

// Random2.java // java.util.Random methods are non-static, do need to construct Math Random r = new Random( ); for (int i=0; i<10; i++) System.out.println("A double from java.util.Random is " + r.nextDouble( )); for (int i=0; i<10; i++) System.out.println("An integer from java.util.Random is " + r.nextInt( ));

You can also use the `java.util.Random`

`nextGaussian( )`

method, as shown next. The
`nextDouble( )`

methods try to give a
“flat” distribution between
and 1.0 in which each value has an equal chance of being selected. A
Gaussian or normal distribution is a bell-curve of values from
negative infinity to positive infinity, with the majority of the
values around zero (0.0).

// Random3.java Random r = new Random( ); for (int i=0; i<10; i++) System.out.println("A gaussian random double is " + r.nextGaussian( ));

To illustrate the different distributions, I generated 10,000 numbers
first using `nextRandom( )`

and then using ...

Start Free Trial

No credit card required