Heim > Backend-Entwicklung > C++ > Wie kann ich mit LINQ effizient eine zufällige Teilmenge einer Sammlung abrufen?

Wie kann ich mit LINQ effizient eine zufällige Teilmenge einer Sammlung abrufen?

Mary-Kate Olsen
Freigeben: 2025-01-06 03:17:42
Original
531 Leute haben es durchsucht

How Can I Efficiently Retrieve a Random Subset of a Collection Using LINQ?

Effizientes Abrufen einer zufälligen Teilsammlung mit Shuffle

Die Herausforderung, eine zufällige Teilmenge einer Sammlung abzurufen, tritt beim Programmieren häufig auf. LINQ bietet vielseitige Mechanismen zur Manipulation von Datensammlungen, und Entwickler suchen häufig nach optimierten Ansätzen zum Erhalten randomisierter Teilmengen.

Vorgeschlagene Lösung: Implementierung von Fisher-Yates-Durstenfeld Shuffle

Ein Optimum Die Methode, dies zu erreichen, ist der Fisher-Yates-Durstenfeld-Shuffle. Bei dieser Technik wird iterativ ein zufälliges Element aus der Quellsammlung ausgewählt und mit dem letzten unsortierten Element ausgetauscht, um sicherzustellen, dass jedes Element die gleiche Chance hat, ausgewählt zu werden.

Implementierung über die Erweiterungsmethode

Um die Funktionalität von LINQ zu verbessern, wurde eine Erweiterungsmethode namens Shuffle entwickelt, die den Fisher-Yates-Durstenfeld-Shuffle beinhaltet. Diese Methode akzeptiert eine IEnumerable-Eingabe und gibt eine gemischte Sequenz zurück. Darüber hinaus unterstützt es die Übergabe einer Zufallsinstanz zur Anpassung.

Die Implementierung umfasst die Konvertierung der Quellsammlung in eine Liste, um einen zeitkonstanten Zufallszugriff sicherzustellen. Elemente werden dann nacheinander ausgetauscht, um eine zufällige Permutation zu erstellen.

Beispielverwendung

So verwenden Sie die Shuffle-Erweiterungsmethode:

  1. Importieren Sie den Namespace wo die Erweiterung definiert ist.
  2. Rufen Sie die Shuffle-Methode für Ihre Quelle auf Sammlung.
  3. Geben Sie optional eine Zufallsinstanz zur Anpassung an.
  4. Verwenden Sie die resultierende gemischte Sequenz nach Bedarf.

Codebeispiel

Das bereitgestellte Code-Snippet zeigt, wie Sie die Shuffle-Erweiterung verwenden, um eine gemischte Untersammlung der angegebenen zu erhalten Größe:

// take n random items from yourCollection
var randomItems = yourCollection.Shuffle().Take(n);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich mit LINQ effizient eine zufällige Teilmenge einer Sammlung abrufen?. 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