Maison >développement back-end >C++ >L'utilisation de «Random» et «OrderBy» est-elle un moyen efficace de mélanger une liste?
Utiliser
et Liste de shuffle: est-ce un algorithme efficace? Random
OrderBy
Cet article examine si l'utilisation de et
Random
Méthode OrderBy
le code fourni pour générer un nombre aléatoire pour chaque élément et reprendre la liste en fonction de ces nombres:
Évaluation
<code>var r = new Random(); var shuffled = ordered.OrderBy(x => r.Next());</code>Bien que cette méthode semble très intuitive, elle a quelques lacunes:
Complexité informatique:
La complexité du temps est O (n log n), qui est inefficace pour les grandes listes. Le meilleur algorithme de shuffle a la complexité de O (n).Problèmes potentiels:
Cette méthode d'expansion simplifie l'utilisation du mélange de Fisher-Yates et évite les besoins de génération de nouveaux tableaux.
Conclusion
et peuvent être utilisés pour les mélanges, mais ils ont le problème de l'efficacité et de la déviation. Fisher-Yates Shuffle offre une solution plus efficace et non déviation, qui est le premier choix dans la plupart des applications qui doivent être mélangées.
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!