Heim >Backend-Entwicklung >C++ >Warum gibt mein Zufallsstringgenerator identische Strings zurück?
Ihr Ziel ist es, zwei unterschiedliche Zufallszeichenfolgen mit jeweils vier Zeichen zu generieren. Ihr aktueller Code erzeugt jedoch zwei identische Zeichenfolgen.
Das Problem ergibt sich aus der Erstellung einer neuen Random-Instanz innerhalb der RandomString-Methode. Da diese Instanz bei jedem Aufruf initialisiert wird, generiert sie dieselbe Folge von Zufallszahlen, was zu doppelten Zeichenfolgen führt.
Um zwei eindeutige Zeichenfolgen sicherzustellen, müssen wir die Random-Instanz sicherstellen wird nur einmal erstellt. Wir können dies tun, indem wir die Instanz statisch machen und sie mit einem Startwert initialisieren, beispielsweise der aktuellen Zeit in Ticks:
private static Random random = new Random((int)DateTime.Now.Ticks);
Indem wir die Instanz statisch machen und einen Startwert verwenden, stellen wir sicher, dass die Zufallszahl Die Reihenfolge ist bei jedem Aufruf der RandomString-Methode unterschiedlich, wie im geänderten Code unten gezeigt:
private static Random random = new Random((int)DateTime.Now.Ticks);//thanks to McAden 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(); } // get 1st random string string Rand1 = RandomString(4); // get 2nd random string string Rand2 = RandomString(4); // creat full rand string string docNum = Rand1 + "-" + Rand2;
Mit dieser Änderung generiert Ihr Code nun jedes Mal zwei unterschiedliche Zufallszeichenfolgen ausgeführt.
Das obige ist der detaillierte Inhalt vonWarum gibt mein Zufallsstringgenerator identische Strings zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!