Table of Contents
1. java.util.Random
2. Math.Random
3. Java 8 Random.ints
Home Java javaTutorial How to generate random integers in Java

How to generate random integers in Java

May 20, 2023 am 09:28 AM
java

1. java.util.Random

This Random().nextInt(int bound) will generate a random integer from 0 (inclusive) to bound (exclusive).

(1) Code snippet

For getRandomNumberInRange(5, 10), this will generate a random integer between 5 (inclusive) and 10 (inclusive).

private static int getRandomNumberInRange(int min, int max) {
		if (min >= max) {
			throw new IllegalArgumentException("max must be greater than min");
		}
		Random r = new Random();
		return r.nextInt((max - min) + 1) + min;
	}
Copy after login

(2) What is (max – min) 1) min?

The above formula will generate a random integer between min (inclusive) and max (inclusive) .

//Random().nextInt(int bound) = Random integer from 0 (inclusive) to bound (exclusive)	
	//1. nextInt(range) = nextInt(max - min)
	new Random().nextInt(5);  // [0...4] [min = 0, max = 4]
	new Random().nextInt(6);  // [0...5]
	new Random().nextInt(7);  // [0...6]
	new Random().nextInt(8);  // [0...7]
	new Random().nextInt(9);  // [0...8]
	new Random().nextInt(10); // [0...9]			
	new Random().nextInt(11); // [0...10]	
	//2. To include the last value (max value) = (range + 1)
	new Random().nextInt(5 + 1)  // [0...5] [min = 0, max = 5]
	new Random().nextInt(6 + 1)  // [0...6]
	new Random().nextInt(7 + 1)  // [0...7]
	new Random().nextInt(8 + 1)  // [0...8]
	new Random().nextInt(9 + 1)  // [0...9]
	new Random().nextInt(10 + 1) // [0...10]			
	new Random().nextInt(11 + 1) // [0...11]	
	//3. To define a start value (min value) in a range,
	//   For example, the range should start from 10 = (range + 1) + min
	new Random().nextInt(5 + 1)  + 10 // [0...5]  + 10 = [10...15]
	new Random().nextInt(6 + 1)  + 10 // [0...6]  + 10 = [10...16]
	new Random().nextInt(7 + 1)  + 10 // [0...7]  + 10 = [10...17]
	new Random().nextInt(8 + 1)  + 10 // [0...8]  + 10 = [10...18]
	new Random().nextInt(9 + 1)  + 10 // [0...9]  + 10 = [10...19]
	new Random().nextInt(10 + 1) + 10 // [0...10] + 10 = [10...20]
	new Random().nextInt(11 + 1) + 10 // [0...11] + 10 = [10...21]	
	// Range = (max - min)
	// So, the final formula is ((max - min) + 1) + min	
	//4. Test [10...30]
	// min = 10 , max = 30, range = (max - min)
	new Random().nextInt((max - min) + 1) + min
	new Random().nextInt((30 - 10) + 1) + 10
	new Random().nextInt((20) + 1) + 10
	new Random().nextInt(21) + 10    //[0...20] + 10 = [10...30]	
	//5. Test [15...99]
	// min = 15 , max = 99, range = (max - min)
	new Random().nextInt((max - min) + 1) + min
	new Random().nextInt((99 - 15) + 1) + 15
	new Random().nextInt((84) + 1) + 15
	new Random().nextInt(85) + 15    //[0...84] + 15 = [15...99]	
	//Done, understand?
Copy after login

(3) Generate a complete example of 10 random integers in the range between 5 (inclusive) and 10 (inclusive).

package com.mkyong.example.test;
import java.util.Random;
public class TestRandom {
	public static void main(String[] args) {
		for (int i = 0; i < 10; i++) {
			System.out.println(getRandomNumberInRange(5, 10));
		}
	}
	private static int getRandomNumberInRange(int min, int max) {
		if (min &gt;= max) {
			throw new IllegalArgumentException(&quot;max must be greater than min&quot;);
		}
		Random r = new Random();
		return r.nextInt((max - min) + 1) + min;
	}
}
Copy after login

Output

7
6
10
8
9
5
7
10
8
5

2. Math.Random

This Math.random() gives a random double value from 0.0 (inclusive) to 1.0 (exclusive) .

(1) Code snippet. Referring to 1.2, it's more or less the same formula.

(int)(Math.random() * ((max - min) 1)) min

(2) generates 16 (inclusive) to 20 (inclusive Complete example of 10 random integers in the range ).

package com.mkyong.example.test;
public class TestRandom {
	public static void main(String[] args) {
		for (int i = 0; i &lt; 10; i++) {
			System.out.println(getRandomNumberInRange(16, 20));
		}
	}
	private static int getRandomNumberInRange(int min, int max) {
		if (min &gt;= max) {
			throw new IllegalArgumentException(&quot;max must be greater than min&quot;);
		}
		return (int)(Math.random() * ((max - min) + 1)) + min;
	}
}
Copy after login

Output

17
16
20
19
20
20
20
17
20
16

3. Java 8 Random.ints

In Java 8, a new method java.util.Random

public IntStream ints(int randomNumberOrigin, int randomNumberBound)
	public IntStream ints(long streamSize, int randomNumberOrigin, int randomNumberBound)
Copy after login

This Random. ints(int origin, int bound) or Random.ints(int min, int max) generates a random integer from origin (inclusive) to bound (exclusive).

(1) Code snippet.

private static int getRandomNumberInRange(int min, int max) {	
		Random r = new Random();
		return r.ints(min, (max + 1)).findFirst().getAsInt();
	}
Copy after login

(2) Generate a complete example of 10 random integers in the range 33 (inclusive) to 38 (inclusive).

package com.mkyong.form.test;
import java.util.Random;
public class TestRandom {
	public static void main(String[] args) {
		for (int i = 0; i &lt; 10; i++) {
			System.out.println(getRandomNumberInRange(33, 38));
		}
	}
	private static int getRandomNumberInRange(int min, int max) {	
		Random r = new Random();
		return r.ints(min, (max + 1)).limit(1).findFirst().getAsInt();		
	}	
}
Copy after login

Output

34
35
37
33
38
37
34
35
36
37

(3) Extra, for your own reference.

Generate a random integer in the range between 33 (inclusive) and 38 (exclusive), with a stream size of 10. and print out the output with forEach.

//Java 8 only
	new Random().ints(10, 33, 38).forEach(System.out::println);
Copy after login

34
37
37
34
34
35
36
33
37
34

The above is the detailed content of How to generate random integers in Java. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Square Root in Java Square Root in Java Aug 30, 2024 pm 04:26 PM

Square Root in Java

Perfect Number in Java Perfect Number in Java Aug 30, 2024 pm 04:28 PM

Perfect Number in Java

Random Number Generator in Java Random Number Generator in Java Aug 30, 2024 pm 04:27 PM

Random Number Generator in Java

Armstrong Number in Java Armstrong Number in Java Aug 30, 2024 pm 04:26 PM

Armstrong Number in Java

Weka in Java Weka in Java Aug 30, 2024 pm 04:28 PM

Weka in Java

Smith Number in Java Smith Number in Java Aug 30, 2024 pm 04:28 PM

Smith Number in Java

Java Spring Interview Questions Java Spring Interview Questions Aug 30, 2024 pm 04:29 PM

Java Spring Interview Questions

Break or return from Java 8 stream forEach? Break or return from Java 8 stream forEach? Feb 07, 2025 pm 12:09 PM

Break or return from Java 8 stream forEach?

See all articles