Laden...

Methode mit Random liefert bei mehrmaligen Aufruf das gleiche Ergebnis

Erstellt von LeoBold vor 7 Jahren Letzter Beitrag vor 7 Jahren 1.087 Views
L
LeoBold Themenstarter:in
13 Beiträge seit 2016
vor 7 Jahren
Methode mit Random liefert bei mehrmaligen Aufruf das gleiche Ergebnis

Hallo zusammen,

ich habe eine einfache Konsolenanwendung, die zwei Karten eines durch ein Array definiertes Kartendeck ausgeben soll.

        private string[] colors = {"Hearts","Diamonds","Spades","Clubs" };
        private string[] cards = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King", "Ace"};

        public string GetACard()
        {
            string card = cards[new Random().Next(0, cards.Length)];
            string color = colors[new Random().Next(0, colors.Length)];
            return card + " " + color;
        }

In meinem Programm möchte ich nun zweimal GetACard() aufrufen. Verständlicherweise gibt mir er mir zweimal die selbe Karte aus. Ich möchte aber zwei verschiedene Karten haben.

Leider finde ich keine Schlagwörter, nach denen ich googeln könnte. Ist es überhaupt der richtige Ansatz, zweimal die "GetACard()" Methode aufzurufen?

(Mir ist bewusst, die Logik noch nicht in Ordnung ist, da die Karte nicht aus dem Deck verschwindet)

Danke!

L
LeoBold Themenstarter:in
13 Beiträge seit 2016
vor 7 Jahren

Dank dir für den Hinweis. Ich dachte es liegt daran, das der Ansatz generell falsch ist

709 Beiträge seit 2008
vor 7 Jahren

Man könnte auch alle möglichen Karten generieren, die Auflistung zufällig mischen und immer die erste/letzte Karte zurückgeben und aus der Auflistung entfernen. Dadurch wäre sichergestellt, dass keine Karte des Decks doppelt zurückgegeben wird.

Alternativ kann man sich natürlich auch die bereits zurückgegebenen Karten merken.

6.911 Beiträge seit 2009
vor 7 Jahren

Hallo,

od. entsprechend [Snippet] Zufallszahlen, die sich nicht wiederholen Mischen und dann einfach die Karten herauspicken. Dazu könnte das "Gemischte" in einen Stack<T> kommen od. einfach einen Index-Zähler erhöhen.

Damit sollte für diese Thema alles gesagt worden sein, zumal so ein ähnliches Thema erst vor Kurzem dran war...bei Bedarf bitte danach suchen.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"