Maison >développement back-end >C++ >Comment puis-je générer des nombres aléatoires uniques en C# lorsque System.Random échoue ?
La génération de nombres aléatoires uniques est essentielle dans de nombreuses tâches de programmation. Cependant, la classe System.Random
intégrée de C# ne garantit pas intrinsèquement l'unicité. Cela peut conduire à des numéros en double, comme l'a découvert un développeur, même lorsque l'instance Random
est déclarée en dehors de la fonction.
Le problème et une meilleure solution :
La graine utilisée avec Random.Next()
ne contrôle pas directement l'unicité. Voici une stratégie plus efficace :
Tirer parti des collections pour un caractère unique :
<code class="language-csharp">public Random a = new Random(); public List<int> randomList = new List<int>(); int MyNumber = 0; private void GenerateUniqueNumber() { MyNumber = a.Next(0, 10); if (!randomList.Contains(MyNumber)) randomList.Add(MyNumber); }</code>
Création d'un générateur de nombres aléatoires personnalisé :
Explorer les bibliothèques alternatives :
Plusieurs alternatives offrent une génération améliorée de nombres aléatoires :
RandomNumberGenerator
: Une option plus sécurisée cryptographiquement.Guid.NewGuid()
: Génère des identifiants globalement uniques (GUID), adaptés lorsque l'unicité séquentielle n'est pas cruciale.System.Numerics.Tensors
: Fournit des méthodes d'échantillonnage aléatoire pour diverses distributions.La meilleure approche dépend des besoins de l'application, des contraintes de performances et du niveau de caractère aléatoire requis.
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!