Maison > développement back-end > C++ > Pourquoi mon générateur de chaînes aléatoires produit-il des sorties en double ?

Pourquoi mon générateur de chaînes aléatoires produit-il des sorties en double ?

Mary-Kate Olsen
Libérer: 2025-01-05 11:17:41
original
233 Les gens l'ont consulté

Why Does My Random String Generator Produce Duplicate Outputs?

Sortie de duplication du générateur de chaînes aléatoires

Votre objectif est de générer deux chaînes aléatoires distinctes de quatre caractères. Cependant, votre code actuel renvoie des doublons.

Cause première

La cause première réside dans l'initialisation de l'instance Random dans la méthode RandomString. Chaque invocation de la méthode crée une nouvelle instance de Random, résultant en des séquences identiques de nombres aléatoires.

Solution

Pour garantir deux chaînes aléatoires uniques, déplacez l'initialisation de l'instance Random en dehors de la méthode, au niveau de la classe. Cela garantit qu'une seule instance est utilisée tout au long de la durée de vie de la classe.

Code modifié

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

Exemple de sortie

Le code modifié générera deux chaînes aléatoires uniques de quatre caractères, telles que :

UNTE-FWNU
Copier après la connexion

à la place de doublons comme :

UNTE-UNTE
Copier après la connexion

En initialisant l'instance Random au niveau de la classe, vous vous assurez qu'une séquence cohérente de nombres aléatoires est utilisée, ce qui entraîne des chaînes aléatoires uniques.

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