Random Numbers in Java

Our first program will demonstrate how to generate random numbers in Java. Here’s the full source code:

import java.util.Random;

public class RandomNumbers {
    public static void main(String[] args) {
        Random rand = new Random();

        // For example, nextInt(100) returns a random int n,
        // 0 <= n < 100.
        System.out.print(rand.nextInt(100) + ",");
        System.out.println(rand.nextInt(100));

        // nextDouble() returns a double f,
        // 0.0 <= f < 1.0.
        System.out.println(rand.nextDouble());

        // This can be used to generate random doubles in
        // other ranges, for example 5.0 <= f' < 10.0.
        System.out.print((rand.nextDouble() * 5) + 5 + ",");
        System.out.println((rand.nextDouble() * 5) + 5);

        // If you want a known seed, create a new
        // Random object with a specific seed.
        Random r2 = new Random(42);
        System.out.print(r2.nextInt(100) + ",");
        System.out.println(r2.nextInt(100));

        Random r3 = new Random(42);
        System.out.print(r3.nextInt(100) + ",");
        System.out.println(r3.nextInt(100));
    }
}

Java’s java.util.Random class provides pseudorandom number generation.

The nextInt(int bound) method returns a random int n, where 0 <= n < bound.

The nextDouble() method returns a double f, where 0.0 <= f < 1.0.

This can be used to generate random doubles in other ranges, for example 5.0 <= f' < 10.0.

If you want a known seed, create a new Random object with a specific seed. This allows for reproducible sequences of random numbers.

To run the program, compile and execute it:

$ javac RandomNumbers.java
$ java RandomNumbers
68,56
0.8090228139659177
5.840125017402497,6.937056298890035
94,49
94,49

Some of the generated numbers may be different when you run the sample.

See the Random class documentation for references on other random quantities that Java can provide.

For more advanced random number generation, you might want to look into the java.util.concurrent.ThreadLocalRandom class for better performance in concurrent environments, or the java.security.SecureRandom class for cryptographically strong random numbers.

Markdown format suitable for Hugo: Yes Explanation adapted to Java: Yes No XML tags: Yes No mention of translation from Go: Yes