Heim > Backend-Entwicklung > C++ > Ist die Verwendung von 'Random' und 'OrderBy' eine effiziente Möglichkeit, eine Liste zu mischen?

Ist die Verwendung von 'Random' und 'OrderBy' eine effiziente Möglichkeit, eine Liste zu mischen?

Linda Hamilton
Freigeben: 2025-01-31 18:56:10
Original
119 Leute haben es durchsucht

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

Verwenden Sie

und Shuffle -Liste: Ist es ein effizienter Algorithmus? Random OrderBy In diesem Artikel wird erläutert, ob die Verwendung von und

ein effektiver Weg zur Mischungliste ist.

Random Methode OrderBy

Der Code zum Generieren einer Zufallszahl für jedes Element und die Liste basierend auf diesen Zahlen wieder aufzunehmen:

Bewertung

<code>var r = new Random();
var shuffled = ordered.OrderBy(x => r.Next());</code>
Nach dem Login kopieren
Obwohl diese Methode sehr intuitiv aussieht, hat sie einige Mängel:

Computerkomplexität:

Die Zeitkomplexität ist O (N log n), was für große Listen ineffizient ist. Der bessere Shuffle -Algorithmus hat die Komplexität von O (n).

mögliche Probleme:
    basierend auf den Elementen der Zufallsnummerierung kann eine Abweichung verursachen. Die Häufigkeit bestimmter Elemente kann höher sein als andere Elemente.
  • Alternativ
  • Der bessere Shuffle-Algorithmus ist das Fisher-Yates-Shuffle, der das Element in eine zufällige Position in der Liste austauscht. Dies sorgt für eine einheitlichere Verteilung und die Komplexität ist O (n).
  • implementieren

Diese Expansionsmethode vereinfacht die Verwendung von Fisher-Yates 'Shuffle und vermeidet die Anforderungen der Erzeugung neuer Arrays.

Schlussfolgerung

und können zum Mischen verwendet werden, aber sie haben das Problem der Effizienz und Abweichung. Fisher-yates Shuffle bietet eine effizientere und nicht deaktiviertere Lösung. Dies ist die erste Wahl in den meisten Anwendungen, die gemischt werden müssen.

Das obige ist der detaillierte Inhalt vonIst die Verwendung von 'Random' und 'OrderBy' eine effiziente Möglichkeit, eine Liste zu mischen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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