JAVA – How to generate random integers within a specific range in Java
- In programming world, we often need to generate random numbers, sometimes random integers in a range e.g. 1 to 100 etc.
- Random number generation in Java is easy as Java API provides good support for random numbers via java.util.Random class, Math.random() utility method and recently ThreadLocalRandom class in Java 7.
- random() method is the most convenient way of generating randoms in Java it only returns random doubles, on the other hand by using Random, we can generate pseudo-random integer, floating point numbers e.g. double and even random boolean values.
Three ways to generate random integers in a range.
Table Of Content
- java.util.Random.nextInt
- Math.random.
- java.util.Random.ints (Java 8)
java.util.Random
- This Random().nextInt(int bound) generates a random integer from 0 (inclusive) to bound (exclusive).
For getRandomNumberInRange(5, 10), this will generates a random integer between 5 (inclusive) and 10 (inclusive).
What is (max – min) + 1) + min?
Above formula will generates a random integer in a range between min (inclusive) and max (inclusive).
//1. nextInt(range) = nextInt(max – min)
[ad type=”banner”]//2. To include the last value (max value) = (range + 1)
//3. To define a start value (min value) in a range,
// For example, the range should start from 10 = (range + 1) + min
// Range = (max – min)
// So, the final formula is ((max – min) + 1) + min
//4. Test [10…30]
// min = 10 , max = 30, range = (max – min)
//5. Test [15…99]
// min = 15 , max = 99, range = (max – min)
[ad type=”banner”]Example:
To generate 10 random integers in a range between 5 (inclusive) and 10 (inclusive).
WikitechyRandom.java
Output.
- 7
- 6
- 10
- 8
- 9
- 5
- 7
- 10
- 8
- 5
Math.random
- This Math.random() gives a random double from 0.0 (inclusive) to 1.0 (exclusive).
Formula:
int)(Math.random() * ((max – min) + 1)) + min
Example:
- To generate 10 random integers in a range between 26 (inclusive) and 30 (inclusive).
WikitechyRandom.java
[ad type=”banner”]Output.
- 27
- 26
- 30
- 29
- 30
- 30
- 30
- 27
- 30
- 26
Note:
- The Random.nextInt(n) is more efficient than Math.random() * n
java.util.Random.ints
- In Java 8, New methods are added in java.util.Random
public IntStream ints(int randomNumberOrigin, int randomNumberBound)
public IntStream ints(long streamSize, int randomNumberOrigin, int randomNumberBound)
- This Random.ints(int origin, int bound) or Random.ints(int min, int max) generates a random integer from origin (inclusive) to bound (exclusive).
Example :
- To generate 10 random integers in a range between 43 (inclusive) and 48 (inclusive).
WikitechyRandom.java
Output.
- 44
- 45
- 47
- 43
- 48
- 47
- 44
- 45
- 46
- 47


