Heim >Backend-Entwicklung >C++ >Warum erzeugt mein Zufallsstringgenerator immer den gleichen String?

Warum erzeugt mein Zufallsstringgenerator immer den gleichen String?

Linda Hamilton
Linda HamiltonOriginal
2025-01-05 22:41:38574Durchsuche

Why Does My Random String Generator Keep Producing the Same 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!

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