Entscheidungsfindung auf Basis von Wahrscheinlichkeiten BlackJack

#1
Hallo liebe Community,

ich möchte eine kleine KI für Black Jack entwickeln und brauche eine Art Formel oder Berwertungsfunktion um den nächstbesten Zug zu berechnen
Ich erläutere das am Besten anhand eines Beispiels:

Dealerhand = 2
Spielerhand=16

Mein Programm hat auf Basis der vorhanden Karten errechnet, dass es eine Wahrscheinlichkeit von 38,46% gibt, dass der nächste Punktestand für den Spieler zwischen 17 und 21 beträgt. Die Wahrscheinlichkeit dass der Spieler bustet, also mehr als 21 zieht beträgt dann 61,53%. Beim Spieler handelt es sich um die Wahrscheinlichkeit des nächsten Zuges, beim Dealer allerdings um die Wahrscheinlichkeiten aller möglichen Kombinationen, die zu einem Punktestand zwischen 17 und 21 führen können. Wobei beide Spieler stehen bleiben sobald die 17 oder größer erreicht ist. Das ist deshalb so, weil der Dealer prinzipiell immer bis mind. 17 ziehen muss, der Spieler allerdings kann nach jedem Zug neu entscheiden.

Für den Dealer habe ich berechnet, dass die Wahrscheinlichkeit einen Punktestand zwischen 17 und 21 zu erhalten 62,44% beträgt und die Wahrscheinlichkeit zu busten (über 21) beträgt 37,55 %. Es ist noch zu beachten, dass wenn der Spieler bustet, das Spiel automatisch als verloren gilt, d.h. der Dealer spielt nicht mehr.
Wie kann ich nun diese Werte sinnvoll in Zusammenhang bringen und daraus eine Entscheidung, ob eine Karte gezogen werden soll oder lieber keine weitere Karten gezogen werden soll mit der Hoffnung, dass der Dealer bustet, ableiten?

Klar für den Spieler beträgt die Wahrscheinlichkeit zu busten deutlich höher als die Wahrscheinlichkeit eine Karte zwischen 1-5 zu erhalten. Doch wenn dieser auf der 16 stehen bleibt bedeutet das dann, dass der Dealer eine 62,44% Wahrscheinlichkeit hat zu gewinnen (also noch höher). Ich muss die Werte also irgendwie in Zusammenhang bringen weiss aber nicht wie. Gemäß der Basic Strategie die für BlackJack gilt, sollte der Spieler bei einem 16 zu 2 Punktestand stehen bleiben. Mein Programm sollte ebenfalls auf Basis einer Berechnung zu diesem Ergebnis kommen, und nicht hartcodiert.

Ich mache noch weitere Beispiele

Erläuterung:

Spieler Score bedeutet Punktestand für den Spieler bei dem eine Entscheidung getroffen werden soll. (Karte ziehen oder stehen bleiben)
Spieler Winrate bedeutet die Chance eine 17 - 21 zu erreichen.
Spiele Bustrate bedeutet die Chance zu busten also zu überziehen (>21)
Analog dann die selben Bedeutung für den Dealer

Situation1:
Spieler Score: 16
Dealer Score: 2
Spieler WinRate: 38,46%
Spieler BustRate: 61,53%
Dealer WinRate: 62,44%
Dealer BustRate: 37,55%
Basic Strategie Empfehlung: Stehen bleiben

Situation2:
Spieler Score: 16
Dealer Score: 10
Spieler WinRate: 38,46%
Spieler BustRate: 61,53%
Dealer WinRate: 78,75%
Dealer BustRate: 21,24%
Basic Strategie Empfehlung: Karte ziehen

Situation3:

Spieler Score: 12
Dealer Score: 6
Spieler WinRate: 38,46%
Spieler BustRate: 30,76%
Dealer WinRate: 57,70%
Dealer BustRate: 42,29%
Basic Strategie Empfehlung: Stehen bleiben

Situation4:

Spieler Score: 12
Dealer Score: 10
Spieler WinRate: 38,46%
Spieler BustRate: 30,76%
Dealer WinRate: 78,75%
Dealer BustRate: 21,24%
Basic Strategie Empfehlung: Karte Ziehen
Vielen Dank für Eure Unterstzüung!
Volrath
 
#3
Vielleicht habe ich auch eine falsche Methode um die Wahrscheinlichkeiten auszurechnen.

Weiss jemand wie man sowas "richtig" macht? Also die Wahrscheinlichkeit auszurechnen eine 17 bis 21 und darüber zu erhalten?

Dafür muss ich dich die WaTen von allen möglichen Kombinationen zwischen 17-21 und >21 ausrechnen oder?

Sprich die erste Reihe wäre dann:

W(2) * W(2) * W(2) * W(2) * W(2) *W(2) * W(2) * W(2) *W(2)

quasi die Wahrscheinlichkeit, dass 9 mal hintereinander die 2 gezogen wird, wobei natürlich mit jedem Zug die nächste Wahrscheinlichkeit eine 2 zu ziehen sinkt. Den Wert addiere ich dann auf die Wahrscheinlichkeit dass eine 18 erreicht wird. nächstes Beispiel wäre dann z.b:

W(2) * W(2) * W(2) * W(2) * W(2) *W(2) * W(2) * W(4)

Dies ergibt ebenfalls 18 und wird mit der vorherigen WaTen addiert. Dies wiederhole ich dann im Grunde für jede Kombination.

Ist das richtig?
 

AGGROStar1991

Well-Known Member
c-b Experte
#4
Nur weil mal nicht jemand am ersten Tag was schreibt heißt das nicht, dass es keinen interessiert. Ich zum Beispiel bin grad erst darüber gestolpert. Ich würde vorschlagen es erstmal mit einfachem card counting zu versuchen und zu beachten , dass die chance dass sich der dealer überkauft im laufenden spiel steigt.^^ https://en.wikipedia.org/wiki/Card_counting da gibts ne Erklärung dazu wie man da karten bewertet im +1,-1,0 - system. Oder hier erklärt von einem meiner liebsten anime : https://www.youtube.com/watch?v=Q_s6de5TR44 ^^
 
#5
Hi,

CardCounting ist nicht so effektiv wie dieser Ansatz hier, da wir ganz genau die Wahrscheinlichkeiten der nächsten Karten abschätzen können.
Kartenzählen ist halt rel. einfach gehalten worden, weil der Mensch sich nicht jede Karte und dessen Wahrscheinlichkeit in einem Casino merken und ausrechnen kann.
Bei CardCounting schätzt man grob ab, wieveiel rel. hohe / mittlere / niedrige sich noch im Deck befinden und versucht dann je nachdem die Einsätze zu erhöhen oder zu verringern.

Deswegen sollte der Ansatz über die Wahrscheinlichkeiten der möglichen Kartenzüge viel effektiver sein meiner Meinung nach.
 

AGGROStar1991

Well-Known Member
c-b Experte
#6
An sich fällt dein Ansatz ja auch darauf herunter.

Aber ich probiere es einfach mal etwas mathematischer :
Angenommen es ist die erste Runde ( 0 karten sind aus dem spiel) und wir spielen nur zu zweit.. dann bekommst du 2 karten von mir , die haben eine summe. Du kannst also die anzahl der karten berechnen, die deinen wert verbessern ohne dass du dich überkaufst. angenommen du bekommst 2 könige, dann ist die Anzahl der Karten, die deinen Status verbessern 4 ( 4 Asse die in dem fall als 1 zählen). die Wahrscheinlichkeit ist als 4 aus 50( also 0.08). Ich würde da gar nicht abwägen zwischen den Karten sondern erstmal nur aufsummieren, ggf eine Karte nehmen und wieder die selbe Abwägung treffen. Das interessante Optimierungsproblem hängt dann davon ab, wie hoch die entsprechenden Einsätze relativ zu deinem Kredit sind, und vermutlich auch noch bei deinen Gegnern. Da würde ich die zeit rein stecken ggf zu optimieren, an sich sehe ich jede Runde einfach nur als Aneinanderreihung von Spielzügen, und findest du jeweils einen der gut genug ist gewinnst du. Die optimale Grenze, an der man keine Karte mehr nimmt, zu bestimmen ist natürlich ein ganz anderes Thema, da spielt dann der Erwartungswert und die Gewinnbedingung eine Rolle. Und dieser Ansatz ist de facto das gleiche wie Kartenzählen, nur dass er den eigenen und gegnerischen Kredit in erwägung zieht. Ich sehe auch nicht, wo du da mit dem Aufschlüsseln bestimmter Wahrscheinlichkeiten für alle Kartentypen die du kriegen könntest noch eine nennenswerte Verbesserung haben kannst, im wesentlichen ziehst du nur alle Spielzüge zu einer großen Einheit zusammen.
 
#7
Naja also es ist ja so, dass die Basic Strategy die Wahrscheinlichkeiten eine vollen Kartendecks berückksichtigt und anhand dieser dann eine Entscheidung empfiehlt
( https://wizardofodds.com/games/blackjack/strategy/4-decks/ )

Es kann aber sein, dass wir beispielsweise 60% des Decks bereits gespielt haben und alle 10er,Asse und 9er bereits gespielt sind. Dann hat man beispielsweise bei einem Score von 16 eine viel geringere Wahrscheinlichkeit zu busten. Und demnach kann dann gerechtfertigt sein eine weitere Karte zu ziehen, obwohl die BasicStrategie dies nicht empfiehlt.

Wie würdest du bei deinem mathematischem Ansatz die N-Züge berücksichtigen? Gut in deinem Beispiel hast du nur einen möglichen weiteren Zug und nur eine Karte die deinen Punktestand verbessern würde. Aber wie sieht es beispielsweise aus wenn du 6 hast. Dann würde beispielsweise folgende Karten dir helfen:

6 + 2+ 3 + 7 = 18
6 + 10 + 2 = 18
6 + 10 + 5 = 21

6 + 10 + 10 = 28 (bust)

Was würdest du hierfür vorschlagen und wie sollte man dann das Ergebnis intepretieren?
 

AGGROStar1991

Well-Known Member
c-b Experte
#8
Ja ich hab eine ziemlich generelle strategie vorgeschlagen, es gibt dutzende varianten von blackjack, wann wie karten aufgedeckt werden, wieviele spieler es gibt, ob die alle eigene karten haben, ob jede runde mit neuem deck gespielt wird , wann man gewinnt, wie aufgeteilt wird...

Im falle der summe 6 lohnt es sich grundsätzlich noch eine weitere Karte zu ziehen. Warum ? Weil es keine einzige Karte gibt, die den Score verschlechtern würde, die chance auf eine verbesserung liegt bei 100%. Dann kriegt man eine Karte, zum beispiel eine 5 ( hat also den score 11). Dann guckt man wieder. Oh schon wieder kann jede Karte den Score verbessern ( Asse können als 1 gezählt werden). also nehmen wir noch eine, zum beispiel eine 8. Nun ist unsere summe 19 und es wird interessant, denn jetzt ist die wahrscheinlichkeit einer verbesserung nicht mehr 100%, denn z.b. eine 10 oder ein Bild heißt überkauft. wir rechnen also zusammen wieviele asse noch drin sind ( maximal 3) und wieviele 2en ( maximal 4) und wissen dann, dass die wahrscheinlichkeit einer verbesserung noch 7 aus <Deckgröße> beträgt. Wann dieses Risiko, diese wahrscheinlichkeit, sich dann lohnt hängt vom konkreten Regelwerk ab ( vor allem wie die gewinne aufgeteilt werden und ob man dealer oder Spieler ist, und bei mehreren Spielern ob man eigentlich gegen die spielt, denn z.B. beim poker geht man auch eher ein Risiko ein, wenn man damit die Chance hat einen unterlegenen Spieler vom Tisch zu drängen) und das ist dann die Optimierungssache, da müsste man das genauer untersuchen wo der Erwartungswert liegt und so. Du musst beachten dass es beim Blackjack KEINE Siegstrategie gibt, nur eine die mit möglichst hoher Wahrscheinlichkeit gewinnt.
 
#9
Danke für deine Antwort. Ich bin noch dabei das ganze zu Optimieren um die Beste Entscheidung zu treffen. Prinzipiell sind wir ja von einem "Sieg" ausgegangen wenn wir 17 bis 21 erreichen, was ja nicht ganz richtig ist. Denn eine 21 schlägt natürlich die anderen Zahlen. Deswegen habe ich nun die Wahrscheinlichkeiten für die einzelnen Augenzahlen zwischen 17 und 21 berechnet. Nehmen wir mal an das wären die konkreten Wahrscheinlichkeiten
für die Augenzahlen 17 - 21 und darüber. Wie kann ich jetzt anhand dieser WaTen errechnen, dass die Augenzahl des Spielers höher sein wird als die des Dealers. Hat da jemand eine Idee zu?

Code:
      Player  Dealer

17    21,88    22,92      
18    23,56    20,90
19    27,96    18,01
20    7,99    14,40
21    9,04    11,40

>21  9,5      12,33
 

AGGROStar1991

Well-Known Member
c-b Experte
#10
Also erstmal : 21 heißt nicht per se ein 3:2 win, das kann auch ein tie sein. Und für Dealer gelten ja üblicherweise andere Regeln, nämlich dass er bei unter 17 auf jeden Fall nachzieht, bei 17 oder höher stehen bleibt. Das heißt wenn der Dealer stehen bleiben muss und du mehr hast kannst du das ganze natürlich abbrechen ( bei einem Einspielerszenario). Wegen solcher Feinheiten hab ich ja das rundenweise Vorgehen vorgeschlagen, denn das ist deutlich einfacher in einen Algorithmus zu gießen.
 
#11
Also mir ist bewusst, dass es auch noch Optimierungspotential bei den Einsätzen, ob Double oder Split gibt. Im ersten Schritt wollte ich es einfach halten und habe das ganze nur auf 2 Ereignisse beschränkt nämlich Karte ziehen oder keine Karte ziehen. Die WKT der einzelnen Karternkombinationen werden natürlich nach jedem Zug neu berechnet. Es ist aber so, dass bei einem frischen Deck die BasicStrategy die Beste ist d.h. die KI muss in solch einem Fall auf dieselben Entscheidungen kommen. Klar ist natürlich, dass es im späteren Spielverlauf dann Unterscheidungen geben wird, weil unsere KI ja die Karten zählt und deren WKT kennt.

Das Problem ist nur, dass sich die Entscheidungen der KI schon bei einem frischen Deck von der BasicStrategy unterscheiden. Darin ist wohl die negative Gewinnquote begründet und natürlich ziehen sich diese Fehlentscheidungen dann im späteren Verlauf durch.

Das Problem ist also mit dem Wissen der Wkt die richtige Entscheidung zu treffen. Anbei hänge ich noch die Spielzüge der BasicStrategy an (Stands on Soft 17). Wobei wir nur die HardHands beachten. SoftHands und Splits beachten wir aktuell der Einfachheithalber nicht.
https://wizardofodds.com/games/blackjack/strategy/4-decks/

Ich habe jetzt noch zwei Situationen rausgesucht und poste mal die Entscheidungen der KI sowie die ermittelten WKTs. In beiden Fälle muss laut BasicStrategy eine Karte gezogen werden. Hast du eine Idee wie wir diese Werte sinnvoll in Zusammenhang bringen können um daraus die beste Entscheidung abzuleiten?

Entscheidung1:

Stand On 7 vs 12

PlayWin: 0.5163203899802444
PlayBust: 0.4836796100197557
DealWin: 0.7389263032138763
DealBust: 0.26107369678612397

Player erreicht:
17:0.1045421960305869
18:0.1043138867358868
19:0.10163596014604828
20:0.10441489226968245
21:0.10141345479803997
22>: 0.4836796100197557

Dealer erreicht:
17:0.36910593119821394
18:0.13856198503797787
19:0.0780479827766283
20:0.07903830055911451
21:0.07417210364194167
22>: 0.26107369678612397



Entscheidung2

Stand On 8 vs 14

PlayWin: 0.4490234648789928
PlayBust: 0.5509765351210071
DealWin: 0.759243212285502
DealBust: 0.24075678771449827

Player erreicht:
17: 0.09052504626369352
18: 0.09030938404381593
19: 0.09056320188721032
20: 0.08731644864045707
21: 0.09030938404381592
22>: 0.5509765351210071

Dealer erreicht:
17: 0.1297439819117179
18: 0.3624591241246656
19: 0.12895291500796807
20: 0.06896267552675348
21: 0.06912451571439683
22>: 0.24075678771449827
 

AGGROStar1991

Well-Known Member
c-b Experte
#12
Ich weiß nicht warum du da so spezifisch mit den langen wahrscheinlichkeiten rechnest, brüche sind doch freunde ;) Nehmen sollst du wenn nicht folgendes eintritt : a.) chance auf eine verbesserung ist zu klein b.) dealer steht und du hast mehr oder er hat sich überkauft.
Chance auf verbesserung ist dabei die chance auf alle Karten, die die punktzahl erhöhen ohne zu überkaufen. Natürlich könnte man naiv sagen "bei über 50% chance ziehe ich noch eine". Und das würde funktionieren. Aber nicht optimal, das den fall betrachtet dass du ein nullsummenspiel hast. Hast du aber nicht, da du als spieler durch verdoppeln und so einen Vorteil hast. Wie man präzise an den Erwartungswert kommt kann ich dir nicht sagen , so vertraut bin ich mit den Regeln nicht. Wenn du den hast ist das aber eine einfache verhältnisgleichung. Einsatz verhält sich zum erwarteten Gewinn, Wie Verlustwahrscheinlichkeit zu Gewinnwahrscheinlichkeit.
 
#13
vielen dank für deine Antwort.

Kannst du bitte anhand der obigen Wahrscheinlichkeiten die Entscheidung anhand deiner Idee ableiten und mir den Rechnweg zeigen?
 

AGGROStar1991

Well-Known Member
c-b Experte
#14
Okay wir konstruieren mal ein ganz einfaches blackjack in dem die speziellen dealerregeln nicht gelten und beide spieler jeweils den gleichen payoff bei einem Sieg haben. Dann, und genau dann, ziehst du die karte, falls die summierte wahrscheinlichkeit aller Karten die deine Hand verbessern über 50% liegt. Angenommen dein payoff ist durch eine sonderregel doppelt so hoch wie meiner. Dann lohnt es sich immer dann, wenn die Wahrscheinlichkeit über 1/3 liegt. Natürlich kann man das noch verbessern. Man kann nämlich auch die Karten des anderen betrachten und sich überlegen "wieviele Karten verbessern seine Hand" und das mit einbeziehen. Wenn ich vor dir liege und deine chance noch zu gewinnen ohne dich zu überkaufen gering genug ist dann werde ich keine Karte mehr nehmen. Das ist allerdings dann schon recht weit von meinem kleinen einfachen Anfangsmodell weg, und ich weiß ich nicht, wie ich dir das noch viel anders erklären soll^^
 
Oben