bitset performant?
-
Eisflamme schrieb:
Okay, also Equity ist das, was in den Pokersendungen immer da steht. Z.B. hat ein Spieler 99 und der andere 76 in Kreuz oder so. Und dann geht es um die Gewinnchance, also die Wahrscheinlichkeit, dass die Hand, wenn die fünf Karten in die Mitte wandern, gewinnt.
Nö, das wäre einfach nur die Gewinnwahrscheinlichkeit.
Equity bezieht auch noch den zu erwartenden Gewinn und den ggf. dafür einzusetzenden Betrag ein.
-
Ne, Equity ist nur die Gewinnwahrscheinlichkeit. Wenn Du den Betrag mit einrechnest, kommst Du zum Erwartungswert (EV), glaub mir.
Aber ich weiß nicht, wie das in der echten Wirtschaft mit Equity ist.
volkard:
Straightflush (Royalflush ist nur der beste davon), Vierling, Full House, Flush, Straße, Drilling, Twopair, Pair, Highcard.Jeweils sind immer noch Kicker ausschlaggebend. Es werden immer 5 Karten verwendet. Wenn zwei Leute Twopair mit AA und KK haben, zählt die 5. Karte, die am höchsten ist. Wenn die aber auf dem Board liegt, ist es wieder der Splitpot.
-
Eisflamme schrieb:
Es werden immer 5 Karten verwendet. Wenn zwei Leute Twopair mit AA und KK haben, zählt die 5. Karte, die am höchsten ist. Wenn die aber auf dem Board liegt, ist es wieder der Splitpot.
Also ist 10 9 8 7 5 mehr wert als 10 9 8 7 4?
-
Ja.
-
Eisflamme schrieb:
Ja.
Dann gibt es zu viele Gewinnklassen, um jede auszuprogrammieren.
-
Genau. Daher muss da ein schnelles Enumerieren ran. Aber wenn man das schnell macht, reicht das auch vollkommen aus, wie die ganzen Programme ja beweisen. Lustig wird, wenn man nicht nur eine Hand gegen eine andere antreten lässt, sondern mehrere. Selbst, wenn man AA schreibt, sind das ja 6 verschiedene Hände. Und bei so was wie AK sogar 16. Für die gegnerische Hand gilt das auch und dann hat man schon viel Spaß...
Also ich werde vermutlich so ein paar Hilfstabellen machen. Man kann ja auch unterscheiden zwischen den Rängen der Karten (also ungeachtet von der Farbe) und wenn man die Farbe beachtet. Wenn man jetzt die vier Bereiche nach Farben trennt und verodert, hat man ja nur noch 13 Stellen. Dafür kann man eine Lookup-Tabelle machen, die einem angibt, was davon Straight und was nicht ist. Und man kann mit etwas Binärlogik auch die doppelten gut finden.
-
Erklär doch mal genauer, was man weiß. Welche Karten sieht man?
-
Benutzer gibt die zwei Karten von Spieler1 und die zwei Karten von Spieler 2 an, das ist der erste Fall. Kompliziertere Fälle implizieren mehr Hände für die Spieler, das nennt man Range, d.h. Spieler1 hat AA und Spieler2 hat KK,QQ,JJ und man erhält die mittlere Equity gegen die Range. Aber das lässt sich ja mit dem, was man dann schon hat, machen.
-
Man sieht also von jedem Spiele 2 Karten? Wieviele Karten gibt es insgesammt? 32?
-
52
Wie gesagt, es gibt 48*47*46*45*44 / (5!) Möglichkeiten für Boards.
-
Du siehst doch schon 2 Karten pro Spieler, oder? Dann hast du doch schon deutlich weniger Möglichkeiten.
-
Ja, deswegen fang ich mit 48 und nicht mit 52 an...
-
Ich meinte 48*47*46, weil 2 schon weg. Aber es gibt ja nur 10 Stufen http://de.wikipedia.org/wiki/Poker#Kombinationen. Da kannst du ja einfach berechnen, wie groß noch die Wahrscheinlichkeit ist, dass man eine erreicht. Wenn beide eine erreichen können, dann halt noch wie groß die Wahrscheinlichkeit ist, dass einer ein höheres Entscheidungskriterium hat. Aus all den Wahrscheinlichkeiten ergibt sich dann diese Equideingdsda.
-
Das klappt so vorne und hinten nicht. Probier's Mal zu implementieren, dann siehstes.
-
Nicht durchprobieren.
Sondern
http://de.wikipedia.org/wiki/Wahrscheinlichkeitstheorie#Bedingte_Wahrscheinlichkeit
usw.Oder was ist das Problem.
-
Auf CodeProject.com gibt es einige Artikel von Keith Rule, der das in C# umgesetzt hat, vielleicht hilft dir das ja weiter.
-
Ja, die habe ich schon angesehen und arbeite gerade auch mit dem Projekt. Die Abkürzung über die Binrädarstellung mit Lookup-Tabellen setze ich gerade um und erste Tests zeigen, dass diese Lösung schnell genug ist.
-
Wenn du fertig bist kannst du ja mal ´nen Benchmark fahren und gucken, was schneller ist (C# oder C++). So aus Interesse...
-
Das ginge. Ich muss das dann nur erstmal vergleichbar machen. Aber ein paar einfache Tests sollten schon funktionieren.
Ein paar Änderungen habe ich aber auch drin, im C#-Code sind irgendwelche Fälle abgedeckt, die es gar nicht geben kann usw. Mal schauen!