Générer des nombres aléatoires uniques en C#
Dans le développement d'applications qui doivent générer des nombres uniques aléatoires, les développeurs rencontrent souvent des problèmes avec la classe System.Random. Même si vous utilisez DateTime.Now.Ticks comme graine, il peut toujours y avoir des numéros en double.
Résoudre le problème de valeur en double
System.Random.Next() lui-même ne garantit pas l'unicité des nombres générés. Lorsqu'elle est combinée avec une plage plus étroite (par exemple 0 à 10), la probabilité de rencontrer des valeurs en double est plus élevée.
Alternative : Maintenance de la liste
Pour surmonter cette limitation, une approche plus robuste consiste à maintenir une liste de nombres générés. La duplication peut être évitée en vérifiant si le numéro potentiel existe déjà dans la liste.
Ce qui suit est une implémentation modifiée utilisant cette stratégie :
public Random a = new Random(); public List<int> randomList = new List<int>(); int MyNumber = 0; private void NewNumber() { MyNumber = a.Next(0, 10); if (!randomList.Contains(MyNumber)) randomList.Add(MyNumber); }
Cette approche garantit la création de valeurs véritablement uniques en maintenant une liste de numéros générés et en filtrant les doublons.
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!