Ein häufiges Problem bei Zufallsstringgeneratoren tritt auf, wenn die generierten Strings identisch erscheinen, selbst wenn der Generator mehrmals aufgerufen wird. Dieses Problem ergibt sich aus der Tatsache, dass der Generator innerhalb der Funktion initialisiert wird, was dazu führt, dass derselbe Satz von Zufallswerten wiederholt generiert wird.
Um unterschiedliche Zufallszeichenfolgen sicherzustellen, sollte die Random-Instanz verwendet werden außerhalb der Funktion erstellt werden, wo sie während des gesamten Lebenszyklus des Programms zugänglich bleibt. Dadurch behält die Instanz ihren Zustand bei und verhindert so die Generierung identischer Zeichenfolgen.
Hier ist eine aktualisierte Version Ihres Codes:
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); // create full rand string string docNum = Rand1 + "-" + Rand2;
Wenn Sie nun die RandomString-Funktion zweimal aufrufen, Es werden zwei unterschiedliche Zeichenfolgen mit vier Zeichen generiert, was zu einer Ausgabe ähnlich „UNTE-FWNU“ anstelle von „UNTE-UNTE“ führt.
Das obige ist der detaillierte Inhalt vonWarum gibt mein Zufallsstringgenerator immer den gleichen String zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!