Heim >Backend-Entwicklung >C++ >Warum produziert mein Zufallszahlengenerator nur eine Zahl und wie kann ich sie beheben?
In diesem Artikel wird eine Funktion des Zufallszahlengenerators
nur eine Zufallszahl generiert. Die Hauptursache des Problems ist, dass die Funktion bei jedem Aufruf eine neue Instanz erstellt. Da der interne Status der -Instanz auf der Initialisierung der Systemaktuhren basiert, erhalten in einem Schließungszyklus mehrere Aufrufe den gleichen Wert. RandomNumber
Random
Um dieses Problem zu lösen und die Genauigkeit von Zufallszahlen zu gewährleisten, sollte eine Random
-Stanz erstellt und wiederverwendet werden. Der folgende Code zeigt, wie man erreicht:
Random
Mithilfe der Anweisung synchronisieren wir die Besuche von
<code class="language-csharp">private static readonly Random random = new Random(); private static readonly object syncLock = new object(); public static int RandomNumber(int min, int max) { lock (syncLock) { return random.Next(min, max); } }</code>jedes Mal eine eindeutige Zufallszahl in derselben Zeile erzeugt.
lock
Eine andere Methode besteht darin, Random
Variablen zu verwenden, um eine RandomNumber
-Schichtungsinstanz für jeden Thread beizubehalten, um die Synchronisation zu vermeiden:
Das obige ist der detaillierte Inhalt vonWarum produziert mein Zufallszahlengenerator nur eine Zahl und wie kann ich sie beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!