Zufallszeichenfolgengenerator dupliziert die Ausgabe
Ihr Ziel ist es, zwei verschiedene, aus vier Zeichen bestehende Zufallszeichenfolgen zu generieren. Ihr aktueller Code gibt jedoch Duplikate zurück.
Grundursache
Die Grundursache liegt in der Initialisierung der Random-Instanz innerhalb der RandomString-Methode. Jeder Aufruf der Methode erstellt eine neue Instanz von Random, was zu identischen Folgen von Zufallszahlen führt.
Lösung
Um zwei eindeutige Zufallszeichenfolgen sicherzustellen, verschieben Sie die Initialisierung von die Random-Instanz außerhalb der Methode, in die Klassenebene. Dadurch wird sichergestellt, dass während der gesamten Lebensdauer der Klasse eine einzelne Instanz verwendet wird.
Modifizierter Code
private static Random random = new Random((int)DateTime.Now.Ticks); 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;
Beispielausgabe
Der geänderte Code generiert zwei eindeutige Zufallszeichenfolgen mit vier Zeichen, z als:
UNTE-FWNU
anstelle von Duplikaten wie:
UNTE-UNTE
Durch die Initialisierung der Random-Instanz auf Klassenebene stellen Sie sicher, dass eine konsistente Folge von Zufallszahlen verwendet wird, was zu Unique führt Zufällige Zeichenfolgen.
Das obige ist der detaillierte Inhalt vonWarum erzeugt mein Zufallszeichenfolgengenerator doppelte Ausgaben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!