# Random numbers

To generate random numbers the Math.random() method can be used, which returns a double, greater than or equal to 0.0 and less than 1.0.

The following code returns a random integer between n and m (where n <= randomNumber < m):

 Code section 3.30: A random integer. int randomNumber = n + (int)(Math.random() * ( m - n ));

Alternatively, the java.util.Random class provides methods for generating random booleans, bytes, floats, ints, longs and 'Gaussians' (doubles from a normal distribution with mean 0.0 and standard deviation 1.0). For example, the following code is equivalent to that above:

 Code section 3.31: A random integer with Gaussian. Random random = new Random(); int randomNumber = n + random.nextInt(m - n);

As an example using random numbers, we can make a program that uses a Random object to simulate flipping a coin 20 times:

 Code listing 3.25: CoinFlipper.java import java.util.Random; public class CoinFlipper { public static void main(String[] args) { // The number of times to flip the coin final int TIMES_TO_FLIP = 20; int heads = 0; int tails = 0; // Create a Random object Random random = new Random(); for (int i = 0; i < TIMES_TO_FLIP; i++) { // 0 or 1 int result = random.nextInt(2); if (result == 1) { System.out.println("Heads"); heads++; } else { System.out.println("Tails"); tails++; } } System.out.println("There were " + heads + " heads and " + tails + " tails"); } }