Heim >Java >javaLernprogramm >Warum scheinen meine Zufallszahlen in Java jedes Mal gleich zu sein?

Warum scheinen meine Zufallszahlen in Java jedes Mal gleich zu sein?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-09 13:41:02969Durchsuche

Why Do My Random Numbers in Java Seem to Be the Same Every Time?

Zufallszahlen mithilfe von Seeds in Java verstehen

In Java wird ein Seed verwendet, um eine Zufallsinstanz zu initialisieren und eine Folge von Pseudozufallszahlen zu generieren . Wenn derselbe Startwert bereitgestellt wird, erzeugt die Random-Instanz dieselbe Zahlenfolge.

Warum sind meine Zufallszahlen jedes Mal gleich?

Im bereitgestellten Code:

double num = generator.nextDouble() * (0.5);

Sie verwenden für jeden Aufruf von randomGenerator denselben Startwert, was zu derselben Zufallssequenz führt Zahlen.

So beheben Sie das Problem

So generieren Sie verschiedene Folgen von Zufallszahlen mit einem Startwert:

  1. Verwenden Sie verschiedene Startwerte : Geben Sie bei jedem Aufruf von randomGenerator einen anderen Startwert als Argument für den Random-Konstruktor an. Dadurch werden mehrere Zufallsinstanzen mit jeweils einem eindeutigen Startwert erstellt.
  2. Verwenden Sie den Standard-Startwert: Wenn Sie denselben Startwert über mehrere Aufrufe hinweg verwenden möchten, initialisieren Sie eine einzelne Zufallsinstanz außerhalb von randomGenerator-Methode mit dem Null-Argument-Konstruktor, der die aktuelle Zeit als verwendet Seed.

Beispiel:

private Random generator = new Random(); // outside randomGenerator
double randomGenerator() {
    return generator.nextDouble() * (0.5); // inside randomGenerator
}

Pseudozufallszahlengenerierung

Pseudozufallszahlengeneratoren (PRNGs) generieren Sequenzen, die zufällig erscheinen, aber sind deterministisch und haben einen Anfangswert. Wenn derselbe Seed verwendet wird, erzeugt der PRNG dieselbe Sequenz.

Das obige ist der detaillierte Inhalt vonWarum scheinen meine Zufallszahlen in Java jedes Mal gleich zu sein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn