Maison > développement back-end > C++ > Est-ce que `OrderBy (x => r.next ())` est-il un moyen fiable de mélanger une collection?

Est-ce que `OrderBy (x => r.next ())` est-il un moyen fiable de mélanger une collection?

Barbara Streisand
Libérer: 2025-01-31 19:11:11
original
443 Les gens l'ont consulté

<.> R.Next ()) `Un Roths pour mélanger une collection? "/> Is `OrderBy(x =>
</p> <<> est-il fiable avec <p> tri aléatoire? <strong> <<>
<code>OrderBy(x => r.Next())</code> Certains développeurs essaient d'utiliser les méthodes suivantes pour trier au hasard la collection: </strong>
</p>
<p> Cependant, l'efficacité de cette méthode et du mécanisme sous-jacent méritent d'être explorées. Analysons-le en profondeur. </p>
<div class=

var r = new Random();
var shuffled = ordered.OrderBy(x => r.Next());
Copier après la connexion
<法> L'efficacité de l'algorithme

Cet algorithme n'est pas la meilleure méthode de tri aléatoire. Il a trié les éléments basés sur des nombres aléatoires attribués à chaque élément, ce qui entraîne une complexité temporelle est O (n log n). Ceci est bien inférieur à l'algorithme Fisher-Yates (la complexité du temps est O (n)). <底> Le mécanisme sous-jacent

L'algorithme attribue un nombre aléatoire pour chaque élément de la collection, puis trie les éléments en fonction de ces nombres. Ce processus aléatoire efficacement l'ordre des éléments, mais ce n'est pas une véritable opération de tri aléatoire.

<合> Méthode de tri aléatoire plus appropriée

Bien que cette méthode puisse produire des résultats de tri aléatoire, ce n'est pas la première méthode en raison de sa faible efficacité. L'algorithme de tri aléatoire Fisher-Yates a une complexité de calcul plus faible et une efficacité plus élevée. De plus, une méthode d'expansion de shuffle spéciale peut fournir une expression de fonction de tri aléatoire claire et concise.

L'implémentation de la méthode d'expansion du shuffle

Pour utiliser l'algorithme Fisher-Yates pour implémenter une méthode d'extension de shuffle de base, veuillez suivre les étapes ci-dessous:

La collection d'entrée est convertie en tableau. Utilisez la fonction prédéterminée (par exemple,

) l'élément de la liste d'échanges aléatoires.

Retour aux échanges.
  1. En utilisant cette méthode, les développeurs peuvent trier rapidement et efficacement la collection au moment de la complexité de O (n).
  2. Next <能> Optimisation des performances
  3. Afin d'améliorer encore les performances, la méthode d'expansion peut efficacement échanger des éléments et les renvoyer dans le processus de tri aléatoire, minimisant ainsi le temps consommé par un fonctionnement inutile.
">

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 de ce site Web
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
Derniers articles par auteur
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal