2017-10-21 27 views
-1

Welche Methode des Mischens verwenden Online-Blackjack-Spiele? Behalten sie ein "Deck" von Kartendarstellungen im Code oder behandeln sie einfach jede Hand als eine völlig neue Auswahl aus dem Kartensatz nach dem Zufallsprinzip?Wie mischen Online-Blackjack-Karten Karten?

+1

Nun, es wäre nicht Blackjack, wenn jede Hand völlig neu ist, so müßte es ein simulierter „Schuh sein "von Decks. Es ist ein Implementierungsdetail genau wie es simuliert wird. Am natürlichsten wäre es, einen Fisher-Yates Shuffle vor der Zeit zu machen, aber das ist nur Spekulation und daher etwas meinungsorientiert und auch zu breit. Obwohl das eine interessante Frage ist, glaube ich nicht, dass das wirklich ein Thema ist. Außerdem scheint Ihre Frage davon auszugehen, dass alle Sites die gleiche Methode verwenden. Warum sollte das wahr sein? –

+0

Sie haben nicht danach gefragt, aber ich erwähne es: Sie werden (1) externe Entropie verwenden (physikalische Messungen; vielleicht ortsbezogene Zeiten/Benutzerverhalten, obwohl nicht das letzte allein) (2) cryptoPRNGs. - Der Rest ist abhängig vom Spiel; Aber wenn Shuffling benötigt wird, ist Fisher-Yates großartig (mit einigen zufälligen Bits). – sascha

+0

Diejenigen, die es * richtig * tun, werden ein Deck oder einen Schuh voller Karten mit einem Array richtig simulieren, einen guten RNG mit mehr als 240 Bits des Zustands verwenden, Reduktionsmuster verwenden, um es über die Größe des Schuhs einheitlich zu machen, plus ein richtiges Fisher-Yates wird neu gemischt, wenn noch etwa 15% der Karten übrig sind, um die tatsächliche Casino-Praxis zu simulieren. Ich würde vermuten, dass weniger als 10% der Software-Blackjack-Spiele das alles richtig machen. –

Antwort

0

Es hängt viel davon ab, wer der Hersteller des Spiels ist und welche Art von Programmiersprache sie verwenden. Stellen Sie sich das jedes Mal vor, wenn Sie ein neues Kartenspiel erstellen. Auch in diesem Fall müssen Sie sie mischen. Gute schlurfende Algorithmen sind sehr wichtig, und wenn der Hersteller geschickt genug ist, um sie zu verwenden Algorithmus wie this one:

var rand = new Random(); 
for (int i = cards.Length - 1; i > 0; i--) { 
    int n = rand.Next(i + 1); 
    int temp = cards[i]; 
    cards[i] = cards[n]; 
    cards[n] = temp; 
}