Heim >Backend-Entwicklung >C++ >Warum gibt mein Zufallsstringgenerator identische Strings zurück?

Warum gibt mein Zufallsstringgenerator identische Strings zurück?

DDD
DDDOriginal
2025-01-05 00:57:39326Durchsuche

Why Does My Random String Generator Return Identical Strings?

Zufallszeichenfolgengenerator, der dieselbe Zeichenfolge zurückgibt

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.

Lösung:

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn