Java Top

Get started with Spring 5 and Spring Boot 2, through the Learn Spring course:

>> CHECK OUT THE COURSE

1. Overview

In this tutorial, we'll explore different ways of generating random numbers within a range.

Further reading:

Generating Random Numbers in Java

Learn different ways of generating random numbers in Java.

Java – Random Long, Float, Integer and Double

Learn how to generate random numbers in Java - both unbounded as well as within a given interval.

Java – Generate Random String

Generate Bounded and Unbounded Random Strings using plain Java and the Apache Commons Lang library.

2. Generating Random Numbers in a Range

2.1. Math.random

The Math.random gives a random double value that is greater than or equal to 0.0 and less than 1.0.

Let's use the Math.random method to generate a random number in a given range [min, max):

public int getRandomNumber(int min, int max) {
    return (int) ((Math.random() * (max - min)) + min);
}

Why does that work? Well, let's look at what happens when Math.random returns 0.0, which is the lowest possible output:

0.0 * (max - min) + min => min

So, the lowest number we can get is min.

Since 1.0 is the exclusive upper bound of Math.random, we get:

1.0 * (max - min) + min => max - min + min => max

Therefore, the exclusive upper bound of our method's return is max.

Let's see this same pattern repeated with Random#nextInt in the next section.

2.2. java.util.Random.nextInt

We can also use an instance of java.util.Random to do the same.

Let's make use of the java.util.Random.nextInt method to get a random number:

public int getRandomNumberUsingNextInt(int min, int max) {
    Random random = new Random();
    return random.nextInt(max - min) + min;
}

The min parameter (the origin) is inclusive, whereas the upper bound max is exclusive.

2.3. java.util.Random.ints

The java.util.Random.ints method returns an IntStream of random integers.

So, we can utilize the java.util.Random.ints method and return a random number:

public int getRandomNumberUsingInts(int min, int max) {
    Random random = new Random();
    return random.ints(min, max)
      .findFirst()
      .getAsInt();
}

Here as well, the specified origin min is inclusive, and max is exclusive.

3. Conclusion

In this article, we saw alternative ways of generating random numbers within a range.

Code snippets, as always, can be found over on GitHub.

Java bottom

Get started with Spring 5 and Spring Boot 2, through the Learn Spring course:

>> CHECK OUT THE COURSE
Comments are closed on this article!