Maison >développement back-end >C++ >Comment générer des nombres aléatoires non répétitifs en C# ?

Comment générer des nombres aléatoires non répétitifs en C# ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-21 13:11:10889parcourir

How to Generate Non-Repeating Random Numbers in C#?

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 :

<code class="language-csharp">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);
}</code>

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!

Déclaration:
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