Avatar ·

Wie man eine List<T> zufällig in C# mischt?

Hallo zusammen! Ich bin neu in C# und schreibe eine kleine Anwendung für ein Kartenspiel. Ich habe eine Liste (List), die ein Kartendeck enthält. Ich muss diese Karten vor dem Austeilen zufällig mischen, aber ich finde keine eingebaute Methode wie List.Shuffle().\n\nHier ist mein Code:\n\n```csharp\nList deck = new List();\n// ... Deck mit Karten füllen ...\n\n// Wie jetzt mischen? Ich habe versucht:\ndeck.OrderBy(x => random.Next()).ToList(); // Aber das gibt eine neue Liste zurück, ändert nicht die ursprüngliche\n```\n\nDas Problem ist, dass ich die ursprüngliche Liste deck ändern möchte, nicht eine neue erstellen. Außerdem habe ich gelesen, dass die Verwendung von Random mit OrderBy eine ungleichmäßige Verteilung oder sogar Ausnahmen verursachen kann, wenn random.Next() für mehrere Elemente gleiche Werte zurückgibt.\n\nKönnt ihr mir bitte sagen, wie man List richtig und effizient an Ort und Stelle mischt? Am besten mit einem Codebeispiel. Vielen Dank im Voraus!\n<<>>\n

Bester Weg: Fisher-Yates-Algorithmus (Knuth shuffle)

\n

Der