Heim >Java >javaLernprogramm >So generieren Sie zufällige Ganzzahlen in Java

So generieren Sie zufällige Ganzzahlen in Java

王林
王林nach vorne
2023-05-20 09:28:281411Durchsuche

1. java.util.Random

This Random().nextInt(intbound) generiert eine zufällige Ganzzahl von 0 (einschließlich) bis gebunden (exklusiv).

(1) Code-Snippet

Für getRandomNumberInRange(5, 10) wird dadurch eine zufällige Ganzzahl zwischen 5 (einschließlich) und 10 (einschließlich) generiert.

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;
	}

(2)Was ist (max – min) + 1) + min?

Die obige Formel generiert einen Wert zwischen min (einschließlich) und max (einschließlich). ) ).

//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?

(3) Generieren Sie ein vollständiges Beispiel von 10 zufälligen ganzen Zahlen im Bereich zwischen 5 (einschließlich) und 10 (einschließlich).

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 >= max) {
			throw new IllegalArgumentException("max must be greater than min");
		}
		Random r = new Random();
		return r.nextInt((max - min) + 1) + min;
	}
}

Ausgabe

7
6
10
8
9
5#🎜 🎜#7
10
8
5

2. Math.random

Dieses Math.random() ergibt Gibt einen zufälligen Double-Wert von 0,0 (einschließlich) bis 1,0 (exklusiv) aus.

(1) Codeausschnitt. Bezogen auf 1.2 ist es mehr oder weniger die gleiche Formel.

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

(2) generieren Vollständiges Beispiel für 10 zufällige Ganzzahlen im Bereich von 16 (einschließlich) bis 20 (einschließlich).

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

Ausgabe

17

16
20
19
20
20# 🎜 🎜#20
17
20
16

3. Java 8 Random.ints

In Java 8 hinzugefügt Neue Methode java.util.Random

public IntStream ints(int randomNumberOrigin, int randomNumberBound)
	public IntStream ints(long streamSize, int randomNumberOrigin, int randomNumberBound)

Diese Random.ints(int origin, intbound) oder Random.ints(int min, int max) generiert eine Grenze vom Ursprung (inklusive) (exklusiv) zufällig ganze Zahl.

(1) Codeausschnitt.

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

(2) Generieren Sie ein vollständiges Beispiel von 10 zufälligen ganzen Zahlen im Bereich von 33 (einschließlich) bis 38 (einschließlich).

package com.mkyong.form.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(33, 38));
		}
	}
	private static int getRandomNumberInRange(int min, int max) {	
		Random r = new Random();
		return r.ints(min, (max + 1)).limit(1).findFirst().getAsInt();		
	}	
}

Ausgabe

34
35

37
33
38
37# 🎜 🎜#34
35
36
37


(3) Extra, für Ihre eigene Referenz.

Generieren Sie eine zufällige Ganzzahl im Bereich zwischen 33 (einschließlich) und 38 (ausschließlich) mit einer Stream-Größe von 10. Und mit forEach ausdrucken.

Das obige ist der detaillierte Inhalt vonSo generieren Sie zufällige Ganzzahlen in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen