Heim >Backend-Entwicklung >C++ >Warum erzeugt mein Zufallsstringgenerator immer den gleichen String?
Konsistenzproblem beim Zufallsstringgenerator
Problem:
Ein Zufallsstringgenerator funktioniert nicht Erzeugen Sie unterschiedliche Zeichenfolgen, obwohl sie mehrmals aufgerufen werden. Stattdessen wird immer wieder dieselbe Zufallszeichenfolge generiert.
Code:
private string RandomString(int size) { StringBuilder builder = new StringBuilder(); Random random = new Random(); // Random object created each time char ch; for (int i = 0; i < size; i++) { ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65))); builder.Append(ch); } return builder.ToString(); }
Grund:
Das Problem liegt bei der Erstellung eines neuen Random-Objekts innerhalb der RandomString-Methode. Dadurch wird der Zufallszahlengenerator jedes Mal mit demselben Startwert initialisiert, was zu derselben Folge von Zufallszahlen und letztendlich zu derselben Zufallszeichenfolge führt.
Lösung:
Um zwei unterschiedliche Zufallszeichenfolgen sicherzustellen, sollte das Random-Objekt außerhalb der RandomString-Methode erstellt und statisch gemacht werden. Dadurch wird sichergestellt, dass während der gesamten Lebensdauer der Anwendung derselbe Startwert verwendet wird und bei jedem Aufruf eine konsistente Folge von Zufallszahlen und unterschiedlichen Zeichenfolgen erzeugt wird.
Geänderter Code:
private static Random random = new Random((int)DateTime.Now.Ticks); // Random object created outside method private string RandomString(int size) { StringBuilder builder = new StringBuilder(); char ch; for (int i = 0; i < size; i++) { ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65))); builder.Append(ch); } return builder.ToString(); }
Das obige ist der detaillierte Inhalt vonWarum erzeugt mein Zufallsstringgenerator immer den gleichen String?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!