C #: Wie soll ich den Inhalt eines Arrays mischen?

Ich habe eine Reihe von Ganzzahlen, die als Karten bezeichnet werden [52]. Jedes Element enthält eine Ganzzahl, die eine Karte darstellt (Karten [0] = 5 würden beispielsweise die 6 der Vereine darstellen).

So habe ich das Array gemischt. Es funktioniert, aber ich bekomme Wiederholungen.

private void shuffleCards()
    {
        for (int i = 0; i < cards.Length; i++)
        {
            int randIndex = r.Next(0, 52);
            int origCard = cards[i];
            cards[i] = cards[randIndex];
            cards[randIndex] = origCard;
        }
    }

r ist die Zufallsvariable, die ich am Anfang des Programms initialisiert habe.

Wenn ich das Programm teste, stelle ich fest, dass ich die gleiche Karte zwei- oder dreimal bekomme. Natürlich kann ich keine Wiederholungen bekommen, sie müssen alle unterschiedlich sein. Ich kann in keiner Weise sehen, wie diese Methode mir Wiederholungen gibt.

Wie kann ich dieses Array ohne Wiederholungen mischen? Vielen Dank

BEARBEITE

Okay, es stellte sich heraus, dass die Shuffle-Funktion nicht das Problem war. Es ist die deal () - Funktion, die das Problem verursacht.

private void deal()
    {
        for (int i = 0; i < 26; i++)
        {
            userCards[i] = cards[i];
            setUserValue(); //ignore this
        }
        for (int i = 26; i < 52; i++)
        {
            opponentCards[i - 26] = cards[i];
            setOpponentValue(); //ignore this
        }
    }

Ich weiß, dass es nicht die Shuffle-Funktion ist. Ich druckte die Ergebnisse aller Karten in eine Textdatei und sah keine Iterationen. Wenn jedoch die Karten an den Benutzer und den Gegner ausgeteilt werden, treten alle Iterationen auf. Irgendein Rat

Antworten auf die Frage(2)

Ihre Antwort auf die Frage