In Java bietet die Random-Klasse eine Möglichkeit, Pseudozufallszahlen zu generieren. Durch die Angabe eines Startwerts als Argument ist es möglich, die Reihenfolge der generierten Zahlen zu steuern. Es entsteht jedoch ein Problem, wenn derselbe Startwert wiederholt verwendet wird, was zu identischen Zahlenfolgen führt.
Ein Pseudozufallszahlengenerator (PRNG) ist ein Algorithmus, der generiert eine Folge von Zahlen, die zufällig erscheint, tatsächlich aber durch eine kleine Menge von Anfangswerten, den sogenannten Startwert, bestimmt wird. Durch die Angabe eines Startwerts erzeugt der PRNG jedes Mal die gleiche Zahlenfolge.
Um das Problem der identischen Ausgabe zu lösen, ist es notwendig, die Funktionsweise von Startwerten zu verstehen in PRNGs. Wenn in Java die Random-Klasse mit einem Startargument aufgerufen wird, behält sie den gleichen Zustand für zukünftige Aufrufe bei, was zur gleichen Zahlenfolge führt.
Um unterschiedliche Folgen zu erzeugen, wird empfohlen, das Nullargument aufzurufen Konstruktor von Random, der das System Nanotime als Startwert verwendet. Dadurch wird sichergestellt, dass bei jedem Aufruf der Methode ein anderer Startwert verwendet wird.
Der folgende korrigierte Java-Code verwendet den Null-Argument-Konstruktor, um unterschiedliche Folgen von Zufallszahlen zu generieren:
private Random generator = new Random(); double randomGenerator() { return generator.nextDouble() * 0.5; }
Durch das Verschieben der Random-Instanz außerhalb der Methode und die Verwendung der Nanozeit des Systems als Startwert beseitigt dieser Code das Problem der identischen Ausgabe und generiert unterschiedliche Zufallssequenzen Zahlen.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich in Java immer die gleichen Zufallszahlen, wenn ich einen Seed verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!