Inhaltsverzeichnis
Optimale LINQ-Erweiterung für die Extraktion zufälliger Untersammlungen
Heim Backend-Entwicklung C++ Was ist der optimale LINQ-Ansatz zum Erhalten einer zufälligen Teilmenge?

Was ist der optimale LINQ-Ansatz zum Erhalten einer zufälligen Teilmenge?

Dec 31, 2024 pm 07:58 PM

What's the Optimal LINQ Approach for Getting a Random Subset?

Optimale LINQ-Erweiterung für die Extraktion zufälliger Untersammlungen

In der Welt der Programmierung ist es oft notwendig, eine zufällige Teilmenge aus einer bestimmten Sammlung zu extrahieren. Als LINQ-Enthusiasten fragen Sie sich vielleicht, wie Sie dies am besten erreichen können.

Ein Ansatz besteht darin, die Erweiterungsmethode .Shuffle() zu verwenden, die den Fisher-Yates-Durstenfeld-Shuffle durchführt. Diese Methode randomisiert effektiv die Reihenfolge der Elemente in einer Sammlung und ist somit eine ideale Lösung zum Erstellen einer zufälligen Untersammlung.

Um die Verwendung zu veranschaulichen, nehmen wir an, Sie haben eine Sammlung namens yourCollection mit N Elementen und möchten dies tun Extrahieren Sie n zufällige Elemente, wobei n <= N. So können Sie dies mit der .Shuffle()-Methode implementieren:

var randomItems = yourCollection.Shuffle().Take(n);
Nach dem Login kopieren

Dieser Code mischt zunächst die Elemente hinein yourCollection mithilfe der .Shuffle()-Methode. Anschließend verwendet es die Methode .Take(), um die ersten n Elemente aus der gemischten Sammlung zu extrahieren. Das Ergebnis ist eine zufällige Untersammlung der Anzahl n.

Hier ist ein Beispiel für die Implementierung der .Shuffle()-Erweiterungsmethode selbst:

public static class EnumerableExtensions
{
    public static IEnumerable Shuffle(this IEnumerable source)
    {
        return source.Shuffle(new Random());
    }

    public static IEnumerable Shuffle(
        this IEnumerable source, Random rng)
    {
        if (source == null)
            throw new ArgumentNullException(nameof(source));
        if (rng == null)
            throw new ArgumentNullException(nameof(rng));

        return source.ShuffleIterator(rng);
    }

    private static IEnumerable ShuffleIterator(
        this IEnumerable source, Random rng)
    {
        var buffer = source.ToList();
        for (int i = 0; i < buffer.Count; i++)
        {
            int j = rng.Next(i, buffer.Count);
            yield return buffer[j];

            buffer[j] = buffer[i];
        }
    }
}

Durch die Verwendung dieser Erweiterungsmethode können Sie dies ganz einfach tun Mischen und extrahieren Sie eine zufällige Untersammlung beliebiger Größe aus einer LINQ-Abfrage. Diese Technik bietet eine bequeme und effiziente Lösung für eine häufige Datenmanipulationsaufgabe.

Das obige ist der detaillierte Inhalt vonWas ist der optimale LINQ-Ansatz zum Erhalten einer zufälligen Teilmenge?. 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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert? Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert? Mar 03, 2025 pm 05:52 PM

Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert?

GULC: C -Bibliothek von Grund auf neu gebaut GULC: C -Bibliothek von Grund auf neu gebaut Mar 03, 2025 pm 05:46 PM

GULC: C -Bibliothek von Grund auf neu gebaut

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte Mar 03, 2025 pm 05:53 PM

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte

Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die? Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die? Mar 03, 2025 pm 05:53 PM

Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die?

Wo ist der Rückgabewert der C -Sprachfunktion im Speicher? Wo ist der Rückgabewert der C -Sprachfunktion im Speicher? Mar 03, 2025 pm 05:51 PM

Wo ist der Rückgabewert der C -Sprachfunktion im Speicher?

eindeutiger Gebrauch und Phrasenfreigabe eindeutiger Gebrauch und Phrasenfreigabe Mar 03, 2025 pm 05:51 PM

eindeutiger Gebrauch und Phrasenfreigabe

Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient? Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient? Mar 12, 2025 pm 04:52 PM

Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient?

Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)? Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)? Mar 12, 2025 pm 04:50 PM

Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)?

See all articles