Maison >développement back-end >C++ >Comment puis-je randomiser efficacement une liste générique en C # pour les applications de loterie?
Créez une application de loterie équitable: tri aléatoire de la liste générique C #
La clé pour développer des applications de loterie est d'assurer le tri aléatoire des éléments de liste. Cet article traite de la meilleure façon de réaliser la liste générique
tri aléatoire en C #.
<list>
algorithme de shuffle de Fisher-yates
Fisher-Yates Shuffle Algorithme est une méthode de perturbation efficace des listes génériques. L'algorithme fonctionne via l'interface de la méthode d'extension :
comment utiliser: IList
<code class="language-csharp">private static Random rng = new Random(); public static void Shuffle<T>(this IList<T> list) { int n = list.Count; while (n > 1) { n--; int k = rng.Next(n + 1); T value = list[k]; list[k] = list[n]; list[n] = value; } }</code>Appelez simplement cette méthode sur n'importe quelle collection :
La considération du générateur de nombres aléatoires
IList
Bien que la classe soit pratique, son aléatoire peut être insuffisant. Afin d'améliorer le hasard, il est recommandé d'utiliser le générateur de nombres aléatoires dans
<code class="language-csharp">List<Product> products = GetProducts(); products.Shuffle();</code>
Amélioration de la sécurité des threads
Afin d'éviter les problèmes potentiels dans des environnements multi-thread, il peut améliorer la sécurité des threads: System.Random
System.Security.Cryptography
<code class="language-csharp">using System.Security.Cryptography; ... public static void Shuffle<T>(this IList<T> list) { RNGCryptoServiceProvider provider = new RNGCryptoServiceProvider(); int n = list.Count; while (n > 1) { byte[] box = new byte[1]; do provider.GetBytes(box); while (!(box[0] < 251)); // Ensure a valid range int k = (int)(box[0] / 251.0 * (n + 1)); // Scale to the list size T value = list[k]; list[k] = list[n]; list[n] = value; } }</code>
Grâce à ces méthodes, vous pouvez trier efficacement les éléments de la liste générique des génériques pour créer une application de loterie de loterie vraiment aléatoire.
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!