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;
Exemple de sortie
Le code modifié générera deux chaînes aléatoires uniques de quatre caractères, telles que :
UNTE-FWNU
à la place de doublons comme :
UNTE-UNTE
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!