Maison > développement back-end > C++ > Pourquoi mon générateur de chaînes aléatoires continue-t-il de renvoyer la même chaîne ?

Pourquoi mon générateur de chaînes aléatoires continue-t-il de renvoyer la même chaîne ?

Susan Sarandon
Libérer: 2025-01-05 09:24:38
original
577 Les gens l'ont consulté

Why Does My Random String Generator Keep Returning the Same String?

Générateur de chaînes aléatoires renvoyant la même chaîne

Un problème courant rencontré avec les générateurs de chaînes aléatoires survient lorsque les chaînes générées semblent identiques, même lors de l'appel du générateur plusieurs fois. Ce problème vient du fait que le générateur est initialisé au sein de la fonction, ce qui entraîne la génération répétée du même ensemble de valeurs aléatoires.

Solution

Pour garantir des chaînes aléatoires distinctes, l'instance Random doit être créé en dehors de la fonction, où il reste accessible tout au long du cycle de vie du programme. Ce faisant, l'instance conserve son état, empêchant la génération de chaînes identiques.

Voici une version mise à jour de votre code :

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;
Copier après la connexion

Maintenant, lorsque vous appelez la fonction RandomString deux fois, il générera deux chaînes distinctes de quatre caractères, ce qui donnera un résultat similaire à "UNTE-FWNU" au lieu de "UNTE-UNTE".

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal