How to Generate Random Numbers in a Range in Java

Random numbers are used in a number of programming applications such as games, computer simulation, cryptography etc. It is also used to generate test data. Usually you want to generate random numbers in a specific range of values. The following example program in Java generates 5 random numbers between 10 and 20 (both inclusive).

import java.util.concurrent.ThreadLocalRandom;

/**
 * Prints random numbers within a range of values inclusive of boundary values.
 * For example, if the range is 10 to 20, this program will print random numbers
 * which will be between 10 and 20 including 10 and 20.
 */
public class RandomInRange {
    
    public static void main(String[] args) {
        // We want numbers to vary from 10 to 20 including 10 and 20.
        int minValueForRange = 10;
        int maxValueForRange = 20;
        
        // create 5 random numbers and then print them
        for(int i=0;i<5;i++) {
            int randomNumber = ThreadLocalRandom.current().nextInt(minValueForRange, maxValueForRange + 1);
            System.out.println(randomNumber);
        }
    }
}

If  you want random floating point values or long values you can use nextDouble() or nextLong() methods of ThreadLocalRandom.