Fehlerbehebung und Behebung von wiederholten Zufallszahlen
Die RandomNumber
-Funktion, mit der zufällige Ganzzahlen innerhalb eines bestimmten Bereichs erzeugt werden sollen, erzeugt identische Werte, wenn mehrere Random
Instanzen in einer Schleife erstellt werden. Dies geschieht, weil jede Random
-Stanz mithilfe der aktuellen Zeit initialisiert. In schnellen Schleifen bleibt die Zeit praktisch unverändert, was zu einer wiederholten Zufallszahlenerzeugung führt.
Die Lösung besteht darin, eine einzelne, gemeinsam genutzte Random
Instanz für alle Zahlenerzeugung zu verwenden. Dies verhindert, dass mehrere Threads gleichzeitig den internen Status des Generators ändern. Die Sicherheit der Faden ist hier entscheidend.
Hier ist der verbesserte Code:
<code class="language-csharp">private static readonly Random random = new Random(); // Single instance public static int RandomNumber(int min, int max) { lock (random) // Thread-safe access { return random.Next(min, max); } }</code>
Durch Verwendung einer lock
-Anweisung zur Synchronisierung des Zugriffs auf die einzelne random
-Stanz stellen wir sicher, dass jeder Thread eine eindeutige Zufallszahl erhält. Diese Methode ist sowohl effizient als auch fadensicher und garantiert die gewünschte Zufälligkeit.
Das obige ist der detaillierte Inhalt vonWarum erzeugt mein Zufallszahlengenerator identische Werte und wie kann ich ihn beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!