Heim > Backend-Entwicklung > C++ > Verwendet 'OrderBy' mit 'random' eine effiziente Möglichkeit, eine Liste zu mischen?

Verwendet 'OrderBy' mit 'random' eine effiziente Möglichkeit, eine Liste zu mischen?

Mary-Kate Olsen
Freigeben: 2025-01-31 18:51:10
Original
957 Leute haben es durchsucht

Is Using `OrderBy` with `Random` an Efficient Way to Shuffle a List?

Was ist die Effizienz der Verwendung von

und , um Listen zu mischen? Random OrderBy In diesem Artikel wird die Effizienz der Verwendung der Methode und

zu Mordlisten untersucht. Code -Beispiele sind wie folgt:

Random Code -Arbeitsprinzip OrderBy

var r = new Random();
var shuffled = ordered.OrderBy(x => r.Next());
Nach dem Login kopieren
Dieser Code verwendet

Klasse, um Zufallszahlen zu generieren. Für jedes Element in der Liste verwendet die -Methode den Lambda -Ausdruck , um eine Zufallszahl dafür zuzuweisen. Anschließend wird die Liste nach diesen Zufallszahlen sortiert, um Mischungseffekte zu erzielen.

Was ist die Effizienz dieses Shuffle -Algorithmus? Random ordered Obwohl dieser Code den Zweck des Mischens erreichen kann, ist seine Effizienz problematisch. OrderBy Die untere Schicht der Methode verwendet O (n log n) Sortieralgorithmus, was für die Umschulungsaufgabe zu kompliziert ist, da die Umform nur die zeitliche Komplexität von O (n) erfordert. x => r.Next()

besser und berücksichtigt Faktoren

Der effektivere Shuffle-Algorithmus ist der Fisher-Yates-Shuffle-Algorithmus. Aus Gründen der Bequemlichkeit und Klarheit können Sie mit dem Fisher-Yates-Algorithmus eine

-Expansionsmethode erstellen.

OrderBy Fisher-yates Shuffle-Algorithmus durch Iterationslisten und tauschen Elemente mit zufälligen ausgewählten Elementen aus, um das Mischen zu erreichen. Das Folgende ist eine einfache -Gerhebungsmethode (unbegrenzte Überprüfung):

Die Verwendung des Fisher-Yates-Algorithmus kann den Berechnungsaufwand vermeiden, der durch beibehalten wird, während die Mischungsfunktion beibehalten wird.

Das obige ist der detaillierte Inhalt vonVerwendet 'OrderBy' mit 'random' eine effiziente Möglichkeit, eine Liste zu mischen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage