als ein völliger Laie frage ich mich, wie ein kleines Programm à la Texas Holdem Hand Calculator (Grafik siehe: http://www.turningriver.com/holdem-hand-calculator-d…) innerhalb einer Sekunde die Gewinnwahrscheinlichkeit von bis zu zehn Pokerhänden berechnen kann - und das nicht nur vor Spielbeginn für die auf der Hand gehaltenen Karten, sondern auch zu den folgenden drei Setzrunden, sofern man die entsprechenden sog. Community Cards eingibt.
Wieso kann das Programm so schnell die Prozente berechnen? Auf seiner Webseite meint der Verfasser - der leider keine Kontaktadresse hinterlegt hat, sonst hätte ich ihn angeschrieben - hierzu: „Turning River Poker Calculators… Do not simulate hands, they ‚enumerate‘ hands. That means we consider every possible hand, once.“
Mich interessiert das alles, da mir ein Bekannter ein ähnliches, aber auf meine Bedürfnisse angepaßtes Pokerprogramm schreiben möchte, er jedoch keinerlei Ahnung von Poker hat.
die Gewinnwahrscheinlichkeit von bis
zu zehn Pokerhänden berechnen kann - und das nicht nur vor
Spielbeginn für die auf der Hand gehaltenen Karten, sondern
auch zu den folgenden drei Setzrunden, sofern man die
entsprechenden sog. Community Cards
eingibt.
Im Grund ist das einfach: man nimmt alle verbleibenden 50 Karten und zählt alle Möglichkeiten, welche davon die Ausgangshand verbessern. Gemeint sind Kobinationen wie 1 Pair, 2 Pair, Tripel, Vierling, Full House, Strassen, (Straight) Flush. Ob man dann mit z.B. 2 Pair auch gewinnt, steht aber auf einem anderen Blatt…
Im Allgemeinen ist die Ausgangshand umso besser, je höher, näher sich die Kartenwerte sind (am besten auch farblich gleich): dann braucht man weniger Community Cards, um an den Potgewinn zu denken.
Im Grund ist das einfach: man nimmt alle verbleibenden 50
Karten und zählt alle Möglichkeiten, welche davon die
Vermutlich werden auch noch die Karten der anderen Spieler eingerechnet. Es sind also noch weniger Karten übrig.
Farben kann man auch schnell ignorieren, sobald kein flush mehr möglich ist, dann sind es nur noch relativ wenige Möglichkeiten, die man durchprobieren muß und dann einfach mit der Anzahl „gleichartiger“ Karten multiplizieren kann. Kann aber sein, daß ein Computer es genauso schnell schafft einfach alle durchzuprobieren.
Mich interessiert das alles, da mir ein Bekannter ein
ähnliches, aber auf meine Bedürfnisse angepaßtes Pokerprogramm
schreiben möchte, er jedoch keinerlei Ahnung von Poker hat.
Also ideale Voraussetzungen, eine Simulation zu schreiben. Ähm, geht’s noch? Ein tiefes Verständnis der Materie ist Grundvoraussetzung, bevor man etwas modellieren und programmieren kann. Ich vermute, Poker ist alles andere als spannend, wenn es um die Anzahl der Möglichkeiten geht.
Da es sich um ein Glücksspiel handelt, hat man auch relativ wenig Einflussmöglichkeiten, durch kluge Strategie das Spiel zu beeinflussen. Da geht es dann mehr um psychische Effekte, das berühmte „Pokerface“ eben. Du brauchst nicht wirklich gute Karten, um zu gewinnen. Es reicht, wenn alle anderen glauben, du hättest gute Karten
die Gewinnwahrscheinlichkeit von bis
zu zehn Pokerhänden berechnen kann - und das nicht nur vor
Spielbeginn für die auf der Hand gehaltenen Karten, sondern
auch zu den folgenden drei Setzrunden, sofern man die
entsprechenden sog. Community Cards
eingibt.
Im Grund ist das einfach: man nimmt alle verbleibenden 50
Karten und zählt alle Möglichkeiten, welche davon die
Ausgangshand verbessern. Gemeint sind Kobinationen wie 1 Pair,
2 Pair, Tripel, Vierling, Full House, Strassen, (Straight)
Flush. Ob man dann mit z.B. 2 Pair auch gewinnt, steht aber
auf einem anderen Blatt…
Und schnell geht es auch.
Ich habe mal Project Euler 1 eine Routine geschrieben, die Pokerhände bewertet. Das ist vollkommen unoptimierter Perl-Code, und der schafft ca. 13000 Bewertungen pro Sekunde, und macht dabei noch ein bisschen I/O und so.
Also wenn man das in C schreibt und handoptimiert bekommt man sicher noch mal einen Faktor 20 oder mehr raus.
Und wenn man sich dann noch Zwischenergebnisse merkt, kann man vermutlich Millionen von Möglichkeiten in der Sekunde durchlaufen.
Da es sich um ein Glücksspiel handelt, hat man auch relativ
wenig Einflussmöglichkeiten, durch kluge Strategie das Spiel
zu beeinflussen. Da geht es dann mehr um psychische Effekte,
das berühmte „Pokerface“ eben. Du brauchst nicht wirklich gute
Karten, um zu gewinnen. Es reicht, wenn alle anderen glauben,
du hättest gute Karten
Einspruch: Noch besser ist, wenn alle anderen glauben, Du hättest schlechte Karten und würdest nur bluffen, in Wirklich aber …
Also, ich habe mal gelesen, dass Poker-Automaten zu programmieren schwieriger ist als Schach, gerade weil auch Psychologie und Zufall mit drin ist, aber eben nicht ausschließlich.
Für ein paar Prozentzahlen kann man da sicherlich aber was abkürzen. Außerdem rechnen Computer heute in 1 Sekunde schon ziemlich viel.