Java Random

Die Java Random-Klasse wird verwendet, um eine Reihe von Zufallszahlen zu generieren.

Java Random-Klasse

  • Die Random-Klasse ist Teil des java.util-Pakets.
  • Eine Instanz der Java Random-Klasse wird verwendet, um Zufallszahlen zu generieren.
  • Diese Klasse bietet mehrere Methoden zur Generierung von Zufallszahlen vom Typ Integer, Double, Long, Float usw.
  • Der Zufallszahlengeneratoralgorithmus arbeitet mit dem Seed-Wert. Wenn kein Wert angegeben wird, wird der Seed-Wert aus der System-Nanozeit erstellt.
  • Wenn zwei Random-Instanzen den gleichen Seed-Wert haben, generieren sie die gleiche Sequenz von Zufallszahlen.
  • Die Java Random-Klasse ist threadsicher, es wird jedoch empfohlen, in einer mehrthreadigen Umgebung die Klasse java.util.concurrent.ThreadLocalRandom zu verwenden.
  • Random-Klasseninstanzen sind für sicherheitssensitive Anwendungen nicht geeignet. In solchen Fällen ist es besser, java.security.SecureRandom zu verwenden.

Java Random-Konstruktoren

Die Java Random-Klasse hat zwei Konstruktoren, die wie folgt lauten:

  1. Random(): erzeugt einen neuen Zufallsgenerator
  2. Random(long seed): erzeugt einen neuen Zufallsgenerator mit dem angegebenen Seed

Java Random-Klassenmethoden

Lassen Sie uns einige Methoden der Java-Random-Klasse betrachten.

  1. nextBoolean(): Diese Methode gibt den nächsten Pseudorandomwert zurück, der ein boolescher Wert aus der Sequenz des Zufallszahlengenerators ist.
  2. nextDouble(): Diese Methode gibt den nächsten Pseudorandomwert zurück, der ein Double-Wert zwischen 0,0 und 1,0 ist.
  3. nextFloat(): Diese Methode gibt den nächsten Pseudorandomwert zurück, der ein Float-Wert zwischen 0,0 und 1,0 ist.
  4. nextInt(): Diese Methode gibt den nächsten int-Wert aus der Sequenz des Zufallszahlengenerators zurück.
  5. nextInt(int n): Diese Methode gibt einen Pseudorandomwert zurück, der ein int-Wert zwischen 0 und dem angegebenen Wert aus der Sequenz des Zufallszahlengenerators ist.

Java Random-Beispiel

Lassen Sie uns das folgende Java-Random-Beispielprogramm betrachten.

package com.journaldev.examples;

import java.util.Random;

/**
 * Java Random Number Example Program
 * 
 */
public class RandomNumberExample {

	public static void main(String[] args) {
		
		// Initialisieren des Zufallszahlengenerators
		Random random = new Random();
		
		// Generiert booleschen Wert
		System.out.println(random.nextBoolean());
		
		// Generiert Double-Wert
		System.out.println(random.nextDouble());
		
		// Generiert Float-Wert
		System.out.println(random.nextFloat());
		
		// Generiert int-Wert
		System.out.println(random.nextInt());
		
		// Generiert int-Wert within specific limit
		System.out.println(random.nextInt(20));

	}

}

Die Ausgabe des obigen Programms ist:

false
0.30986869120562854
0.6210066
-1348425743
18

Überprüfen Sie diesen Beitrag für weitere Informationen zur Java-Zufallszahlengenerierung.

Zufallszahlengenerierung mit Seed

Es gibt zwei Möglichkeiten, eine Zufallszahl mit einem Seed zu generieren.

Random random = new Random(long seed);
                         
Random random1 = new Random();
random1.setSeed(seed);

Der Seed ist der Anfangswert des internen Zustands des Pseudozufallszahlengenerators, der von der Methode next(int) verwaltet wird.

package com.journaldev.examples;

import java.util.Random;

/**
 * Java Random Number Using Seed Example Program
 * 
 * @author pankaj
 *
 */
public class RadomSeedExample {

	public static void main(String[] args) {
		
		//Verwendung des Konstruktors
		Random random = new Random(100);
		System.out.println("Using Constructor");
		System.out.println(random.nextInt());
		
		//Verwendung der Methode
		Random random2 = new Random();
		random2.setSeed(200);
		System.out.println("Using Method");
		System.out.println(random2.nextInt());
	}
}

Die Ausgabe des obigen Programms ist:

Using Constructor
-1193959466
Using Method
-1133938638

Was passiert, wenn wir zwei verschiedenen Zufallszahlengeneratoren denselben Seed übergeben? Schauen wir uns das folgende Programm an und sehen wir, was passiert, wenn wir zwei verschiedenen Zufallszahlengeneratoren denselben Seed übergeben.

package com.journaldev.examples;

import java.util.Random;

/**
 * Java Random Number Using Same Seed Example Program
 * 
 */
public class RandomNumberSameSeedExample {

	public static void main(String[] args) {
		
		//Initialisieren von zwei Zufallszahlengeneratoren mit demselben Seed
		Random random1 = new Random(100);
		Random random2 = new Random(100);
		
		System.out.println(random1.nextInt());
		System.out.println(random2.nextInt());

	}

}

Die Ausgabe des obigen Programms ist:

-1193959466
-1193959466

Wir können sehen, dass dieselbe Zufallszahl generiert wird, wenn wir zwei verschiedenen Zufallszahlengeneratoren denselben Seed übergeben.

Java 8 Random-Klassenmethoden

Wie Sie auf dem obigen Bild sehen können, wurden in Java 8 viele neue Methoden zur Random-Klasse hinzugefügt. Diese Methoden können einen Strom von Zufallszahlen erzeugen. Unten finden Sie ein einfaches Programm zum Generieren eines Stroms von 5 ganzen Zahlen zwischen 1 und 100.

package com.journaldev.random;

import java.util.Random;
import java.util.stream.IntStream;

public class JavaRandomExample {

	public static void main(String[] args) {

		Random random = new Random();

		// Strom von 5 Ganzzahlen zwischen 1 und 100 generieren
		IntStream ints = random.ints(5, 1, 100);

		ints.forEach(System.out::println);
	}

}

Das ist alles für einen schnellen Überblick über die Java-Random-Klasse. Referenz: API-Dokumentation

Source:
https://www.digitalocean.com/community/tutorials/java-random