Algorithmus für Poker-Hände

Status
Nicht offen für weitere Antworten.

Localtime

Mitglied
Hi,

ich schreibe an einem Poker-Statistik-Programm (Hold'em).
Nun bin ich an einem Punkt angekommen, an dem mir nichts zu einfällt, wie ich das lösen soll. Gefragt sind mathematische Kenntnisse zur Berechnung der besseren Hand.

die Derby-Tabellen(unwichtige Spalten lasse ich weg):
Code:
card
card_id  card_name  card_value
  1           2            1
  2           3            2
[...]
  13          A            12


color
color_id  color_shortcut
  1               s
  2               c
  3               h
  4               d


hand
myHoleCardId1, myHoleCardColorId1, myHoleCardId2, myHoleCardColorId2,
winnerHoleCardId1, winnerHoleCardColorId1, winnerHoleCardId2, winnerHoleCardColorId2,
flopCardId1, flopCardColorId1,  flopCardId2, flopCardColorId2 [...] riverCardColorId

Nun gehen wir mal davon aus, dass ein anderer gewonnen hat. ;(

Ich will nun Folgendes berechnen:

1.) wer hat die bessere Start-Hand mit Chance (Beispiel: ich 60/40)
2.) wer hat die besseren Karten nach dem Flop (mit Chance)
3.) ... nach dem Turn

Es geht mir hauptsächlich darum herauszufinden, wer nach Flop und Turn die besseren 5 Karten hatte und mit wieviel % er vorne liegt ohne 12 Millionen if's.

Über einen Schubbs in die richtige Richtung wäre ich dankbar.


Grüße aus Essen

Henning
 

Painii

Bekanntes Mitglied
Naja prinzipiell würd ich mir vorstellen:

Ich bekomme 2 Karten, der Gegner 2 -> Jetzt hab ich ein ganzes Poker-Deck wo diese 4 Karten fehlen und nehme daraus jede Kombination aus 5 Karten.
Wenn die Kombination für den Gegner spricht bekommt er 1 Punkt gut geschrieben, wenn für mich dann bekomm ich 1 Punkt, wenns für beide spricht dann bekommt keiner einen Punkt (oder jeder einen).
Zum Schluss schreib ich dann einfach Punkte/alleMöglichkeiten und hab die Prozente.
Wenn jetzt eine Karte aufgedeckt wird zähl ich einfach die Karte auf die Hand von beiden Spielern und mache die Prozedur oben nur mit 4 Karten.

edit: Das wär so mein Vorgehen, wieweit das mit der Laufzeit passt weiss ich nicht.
Du musst ja 205476480 Kombinationen überprüfen (48 Karten sind übrig, 5 auswählen, Variation ohne Wiederholung -> 48!/(48-5)!). Da es aber ein Statistik-Programm ist und du nicht live die % anzeigen willst kann das Programm ja auch etwas rechnen... musst du dann schauen
 
Zuletzt bearbeitet:

Localtime

Mitglied
Hi,

Painii:

dazu bräuchte ich 1 Zillion Vergleiche was ich vermeiden will.
Es gibt ja auch Full House, Flush u. Straight, wo der Kartenwert meistens erst an 2. Stelle kommt.


Dissi:

Das mit den outs hatte ich mir auch schon überlegt. Bringt mir nur nichts da angenommen:

HandA: 5,7
HandB: 5,6

Flop: 3,4

HandB hat zwar den oe str8 draw, liegt aber erstmal hinten und braucht Hilfe.

Ich hatte da mal so eine tolle Tabelle gesehen, wo die Wahrscheinlichkeiten der Start-Hände aufgelistet waren (A,Q off vs K,10 suited) ... nur finde ich die nicht mehr.
Und rechnerisch richtig kompliziert wird's dann nach dem Flop / Turn


Aber erstmal Danke Euch beiden.
 

Painii

Bekanntes Mitglied
Hi,

Painii:

dazu bräuchte ich 1 Zillion Vergleiche was ich vermeiden will.
205 Millionen.

Es gibt ja auch Full House, Flush u. Straight, wo der Kartenwert meistens erst an 2. Stelle kommt.

Ich hätte mir vorgestellt:
Code:
int besteHand(Karten[] handKarten, Karten[] offeneKarten){
  //hier jetzt mit if zurückgeben was für ein wert ist -> kann auch irgendwie anders gelöst werden
 if(besteKarte==3)return KARTEN_WERT_3;
 if(besteKarte==paarZweien)return KARTEN_WERT_2ER_PAAR;
}
for(alle möglichen Kombinationen){
 meineBesteMöglichkeit = besteHand(meineHand,aktuelle Kombination) //(z.b. Paar)
 gegnerBesteMöglichkeit = besteHand(gegnerHand,aktuelle Kombination) //(z.b. High Card King)
 if(meineBesteMöglichkeit>gegnerBesteMöglichkeit)meinePunkte++;
 if(meine BesteMöglichkeit<gegnerBesteMöglichkeit)gegnerPunkte++;
 if(meineBesteMöglichkeit==gegnerBesteMöglichkeit); //tue nichts oder gib beiden Punkte, wie auch immer
}

Grad mal geschaut, mein Rechner braucht mit einer for-schleife bis 205476480 ca. 700 milisekunden... wie es aussieht wenn du mit Objekten arbeitest mit der Laufzeit weiss ich nicht, ist aber sicher um einiges langsamer.
 

Localtime

Mitglied
Hi,

um erstmal zu gucken welche Hand besser ist, denke ich mir Folgendes:

ich nehme mir holeCardsA, holeCardsB und die Karten auf dem Board
dann gucke ich:

holeCardsA hast du ein Royal Flush mit den Karten vom Board?
holeCardsB hast du ein Royal Flush ... ?

holeCardsA hast du ein Str8 Flush mit den Karten vom Board?
holeCardsB hast du ein Str8 Flush ... ?
wenn beides true:
holeCardsA was ist deine höchste Karte
holeCardsB was ist deine höchste Karte
wenn wieder gleich:
nächst höhere Karte vergleichen

... usw. nach "unten"

Für den Vergleich sollte ich so mit relativ wenig Code auskommen.


Für die Chancen-Ausrechnung durchwühle ich nochmal das Internet um rauszufinden wie z.B. die Chancen sind: fertige Hand vs viele outs


P.S.: für die Starthand habe ich eine schöne Tabelle gefunden, in der für jede mögliche Kombination der 2 Karten gegen 1-9 unbekannte Gegner die Chancen in % stehen
 
Zuletzt bearbeitet:

Localtime

Mitglied
Hi,
@ARadauer ... super ... Danke!

Ich werde den Code mal durcharbeiten, da ich zwar das tolle Java-Certifikat habe, aber in Java noch Übung brauche (C# + PHP Coder bin). :rtfm:

Für mich ist das Thema --> erledigt !

Danke für Eure Hilfe. Ein tolles Forum. Ich habe hier schon viel gelernt und "geklaut".
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Algorithmus für Arbeit mit fehlenden Listenelementen? Allgemeine Java-Themen 1
L Klassen Algorithmus für das folgende Problem entwickeln? Allgemeine Java-Themen 30
L Algorithmus für kürzesten Weg mit Wegpunkten Allgemeine Java-Themen 21
chik 2 return werte für Greedy-Algorithmus (gelöst) Allgemeine Java-Themen 3
M Algorithmus für automatische Zeilenumbrüche Allgemeine Java-Themen 12
C Algorithmus für Array Allgemeine Java-Themen 9
S Algorithmus für Sudoku Allgemeine Java-Themen 17
F Algorithmus für Sortierung gesucht Allgemeine Java-Themen 15
D Algorithmus für die Erkennung fehlerhafter Eingaben Allgemeine Java-Themen 4
schegga_B AES-Algorithmus in javax.crypto Allgemeine Java-Themen 3
M Laufzeit des Prim Algorithmus Allgemeine Java-Themen 3
O Newton Algorithmus Java Allgemeine Java-Themen 1
CptK Backpropagation Algorithmus Allgemeine Java-Themen 6
N Google Authenticator Algorithmus (SHA1) Allgemeine Java-Themen 1
gotzi242 Schatzsuche mithilfe eines O(log n) Algorithmus Allgemeine Java-Themen 2
Zrebna Quicksort-Algorithmus - zufälliges Pivot wählen Allgemeine Java-Themen 6
B Algorithmus Warteschlange Ringpuffer wirklich fehlerfrei Allgemeine Java-Themen 8
M Probleme mit Negamax-Algorithmus Allgemeine Java-Themen 29
F Q - Learning Algorithmus Bug Allgemeine Java-Themen 4
M Salesman Problem - Bruteforce Algorithmus Allgemeine Java-Themen 23
M Minmax Algorithmus Verständnisproblem Allgemeine Java-Themen 2
H Rundreise frage (Algorithmus) Allgemeine Java-Themen 18
F KMP-Algorithmus Allgemeine Java-Themen 9
S Algorithmus welcher True-Werte in einem Array findet und auswertet. Allgemeine Java-Themen 5
U Methoden Algorithmus MergeSort String [ ] array sortieren programmieren Allgemeine Java-Themen 17
P MinMax Algorithmus Allgemeine Java-Themen 0
J Abhängigkeit zwischen Rechenzeit und Speicherbedarf in einen Algorithmus Allgemeine Java-Themen 7
K Djikstra-Algorithmus Allgemeine Java-Themen 1
T Minimax/Alphabeta Algorithmus hängt sich auf (?) Allgemeine Java-Themen 2
M Algorithmus zum Zahlen einteilen Allgemeine Java-Themen 8
O Best Practice Hilfe bei Algorithmus gesucht Allgemeine Java-Themen 10
S Algorithmus um Objekte auf einer Flaeche mit gleichem Abstand anzuordnen..? Allgemeine Java-Themen 20
S Rucksackproblem und genetischer Algorithmus Allgemeine Java-Themen 9
L Abbruch des Algorithmus Allgemeine Java-Themen 8
D Input/Output Ausgleichen chemischer Reaktionsgleichungen mit dem Gauß-Algorithmus Allgemeine Java-Themen 2
Messoras A*-Algorithmus integrieren Allgemeine Java-Themen 3
S Buchscan 3D Dewarp Algorithmus - Ansätze Allgemeine Java-Themen 1
B Verteilungs-/Vergabe-Algorithmus mit abhängigen Score-Werten Allgemeine Java-Themen 3
Androbin "Shunting Yard"-Algorithmus Allgemeine Java-Themen 6
B Algorithmus - Project Euler Problem 18 Allgemeine Java-Themen 2
N Algorithmus zum bewerten von mathematischen Funktionen Allgemeine Java-Themen 11
O Algorithmus Optimierung Allgemeine Java-Themen 3
Joew0815 Algorithmus - Zahlenfolge in 4 ähnliche Teile aufteilen Allgemeine Java-Themen 0
O Tag Cloud Algorithmus Idee gesucht Allgemeine Java-Themen 2
A Implementierung eines Algorithmus (Farthest Insertion zur Lösung des TSP) in O(n²) Allgemeine Java-Themen 2
C Eclipse Probleme bei selbst erstelltem Algorithmus Allgemeine Java-Themen 2
H Graph-Algorithmus gesucht Allgemeine Java-Themen 21
N Algorithmus durch Workflow Allgemeine Java-Themen 7
M tree-based diff Algorithmus (Code-Vergleiche) Allgemeine Java-Themen 3
S Uhrzeit Algorithmus sale Allgemeine Java-Themen 11
N A*-Algorithmus Allgemeine Java-Themen 5
A Suche Algorithmus zum Erstellen eines planaren Graphen Allgemeine Java-Themen 5
F Methoden Algorithmus zur Gegnerfindung (Turnier) Allgemeine Java-Themen 9
T Algorithmus Graph Allgemeine Java-Themen 10
J Algorithmus gesucht (Stringtransformation) Allgemeine Java-Themen 4
B Algorithmus Krankenhausbelegung Allgemeine Java-Themen 17
S Algorithmus von Dijkstra Allgemeine Java-Themen 2
alex_fairytail OOP Banknoten Algorithmus Teil 2 Allgemeine Java-Themen 13
2 ArrayList aktualisieren Algorithmus Allgemeine Java-Themen 11
alex_fairytail Methoden Banknoten Algorithmus Allgemeine Java-Themen 10
R Codehinweise: Algorithmus Größenvergleich von n Zahlen Allgemeine Java-Themen 5
SuperSeppel13 WTF?! Algorithmus-Geschwindigkeitstest Allgemeine Java-Themen 2
C Algorithmus Problem in Minesweeper Allgemeine Java-Themen 5
S Algorithmus um Labyrinth zu erzeugen Allgemeine Java-Themen 6
V Problem mit A* Pathfinder-Algorithmus Allgemeine Java-Themen 2
S Algorithmus um nächst folgende Primzahl zu berechnen Allgemeine Java-Themen 7
S Algorithmus Problem. Rechtecke effizient auf Spielfeld anordnen. Allgemeine Java-Themen 7
C Algorithmus-Hilfe Allgemeine Java-Themen 20
J Algorithmus Längenkombinationen? Allgemeine Java-Themen 7
M Kombinationen über rekursiven Algorithmus berechnen? Allgemeine Java-Themen 10
D Abstruse Probleme mit eigenem replace Algorithmus Allgemeine Java-Themen 11
P RC4 Algorithmus Allgemeine Java-Themen 3
D RSA Verfahren - Erweiterter Euklidischer Algorithmus Allgemeine Java-Themen 4
C IBAN und Bic Validieren (Algorithmus) Allgemeine Java-Themen 10
P Problem mit A*-Algorithmus Allgemeine Java-Themen 12
M Wörter Algorithmus Allgemeine Java-Themen 7
K Postleitzahlen Algorithmus Allgemeine Java-Themen 12
G Problem mit Algorithmus Allgemeine Java-Themen 3
T Hilfe bei einem Algorithmus Allgemeine Java-Themen 2
S Stemming-Algorithmus gesucht (z.B. Porter) Allgemeine Java-Themen 2
RoliMG präfix zu infix algorithmus Allgemeine Java-Themen 6
Z A*-Algorithmus - Probleme mit offener/geschlossener Liste Allgemeine Java-Themen 7
S Javaimplementierung des MD5 Algorithmus Allgemeine Java-Themen 2
E Container-Pack-Algorithmus Allgemeine Java-Themen 4
G k nearest neighbor algorithmus Allgemeine Java-Themen 7
C HASH Algorithmus 2 Strings ergeben das Selbe. Allgemeine Java-Themen 2
P Page Rank Algorithmus implementieren Allgemeine Java-Themen 7
T Problem RSA-Algorithmus in Java? Allgemeine Java-Themen 2
minzel Hash-Algorithmus Allgemeine Java-Themen 9
Y komprimierung mittels Huffman-Algorithmus, bit-shifting. Allgemeine Java-Themen 2
K Algorithmus Allgemeine Java-Themen 10
I Verschlüsselung mit Pwd. - User soll Algorithmus wählen Allgemeine Java-Themen 4
J fällt euch ein Algorithmus ein? Allgemeine Java-Themen 4
N Euklidischer Algorithmus in Java und keine Terminierung. Allgemeine Java-Themen 7
T Algorithmus verbessern Allgemeine Java-Themen 10
U Suche Algorithmus zur bestimmung des längsten Wegs Allgemeine Java-Themen 3
U Ford-Fulkerson Algorithmus gesucht Allgemeine Java-Themen 1
U Dijkstra Algorithmus gesucht Allgemeine Java-Themen 4
I hash-algorithmus Allgemeine Java-Themen 9
kodela Eingabe für TextArray bedingt sperren Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben