Einzelnen Beitrag anzeigen

Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#5

AW: Poker Simulator

  Alt 27. Sep 2010, 01:02
Höhere Karte -> besser.
Razz = Rats = schlechteste Hand, Gegenteil zu den Nuts. Beim Razz gewinnt die Hand, die die niedrigste höchste Karte aufweist. Bedenke, dass das dabei Ass als 1 gewertet wird, also im weitesten Sinne "beste" Karte bleibt.
Ich habe auch gerade gemerkt, dass es durchaus Paare und Drillinge beim Razz gibt, weil ja auch nicht sicher ist, dass man immer mindestens 5 unterschiedliche Karten hat. Das macht dann die rein kombinatorische Lösung leider kaputt, sorry.

Du müstest eventuell auch noch etwas genauer fragen. Welche Wahrscheinlichkeit willst du genau? Die, dass du im Moment die bessere Hand hälst (s.o.)? Die, mit der dein Gegner noch besser wird als du? Die, mit der du die gesamte Hand gewinnst, basierend auf allem was du gerade siehst, und was noch kommen könnte?

Mal noch ne Portion Mathe, einfach nur für den Überblick.
Bei zwei Spielern gibt es insgesamt (52 über 14) = 1.768.966.344.600 mögliche Spiele.
Nach den ersten je 3 Karten noch (48 über 8) = 377.348.994 (52-4=48, man sieht ja seine eigenen 3 und eine vom Gegner)
Nach den ersten 4 (46 über 6) = 9.366.819
Nach dem 5th street (44 über 4) = 135.751
Nach dem 6th street (42 über 2) = 861

Bei gleichverteiltem Zufallsgenerator (was der Delphi-eigene ist, so lange man ihn nicht missbraucht), wenn du bei 377.348.994 möglichen Händen eine Schätzung machen willst, die nur in 1% aller Fälle verkehrt ist, brauchst du (nach konservativem Ansatz) mindestens n=(377.348.994*0,25*2,58²) / (377.348.993*0,01² + 0,25*2,58²) = 627946460,9154 / 37736,5634 ~= 16.641 Proben. Das ist super flott gemacht, sagt dann aber auch NUR aus, ob du wahrscheinlich gewinnst, oder nicht! Es trifft ÜBERHAUPT keine verwertbare Aussage darüber, wie diese Chancen nun wirklich stehen! Also im Bezug auf Setzhöhe (Pot-Odds) nicht wirklich brauchbar.

Dreht man das um, und du weisst ca. wie viele Proben du zeitlich hin bekommst, könnte man die Aussagequalität noch verbessern. Angenommen, du kannst dir 200.000 Proben erlauben:
200000=(377.348.994*0,25*2,58²) / (377.348.993*a² + 0,25*2,58²) <=>
a = sqrt((0,25*2,58²)/200000) = 0,00288
Das heisst, nach 200000 Proben weisst du mit 99,7%iger Sicherheit, wer das Spiel gewinnen wird. Nach den ersten 3 gegebenen Karten. Das kommt mir zwar gerade zu gut vor, aber um die Uhrzeit schau ich jetzt nicht nochmal genauer in meinen alten Statistikunterlagen nach
Aber so an sich...

Zitat:
EDIT2: Hier ist es in C geschrieben. Die Links mit dem Source-Code sind im Text "versteckt".
Auf Suchspiele haben wir hier eher selten Lust - zumindest wenn es nichts zu gewinnen gibt

Zum wichtigeren Teil! *hust*

Zum Vorgehen in Delphi: 2 Arrays of Integer, 0 = keine Karte, 1-13 = Ass bis König. Die Arrays sortiert halten. Deine ersten 3 Karten in eines schreiben, die eine offene des Gegners in das andere. Die Nullen durch den Zufallsgenerator mit 1-13 füllen (natürlich so, dass keine unmögliche "Gebungen" auftauchen!*), sortieren, und die 5 niedrigsten ohne doppelte daraus in 2 neue 5-Elementige Arrays schieben. Ist ein 5er-Array noch nicht voll, den niedrigsten verbleibenden Wert aus dem 7er "Mutter-Array" reinschieben, usw. Dabei gleich mal separat merken, dass ein Paar entstanden ist, d.h. sollte sich das zweite Array nicht paaren, ist schon klar wer gewinnt. Diese 5er Arrays dann sortieren, und wenn gleich viele bzw. keine "Figuren" (Paare usw.) enthalten sind, von oben nach unten vergleichen. Der, der als erstes eine niedrigere Zahl hat als der andere ist der Gewinner.
*) Am einfachsten machbar durch ein Array der Länge 52, in das dann "1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4...." geschrieben wird, die bekannten entfernt, und dann per Zufallsgenerator gemischt (findet sich einiges zu im Forum hier).

Sowas sollte sich in ein paar Sekündchen ein paar zigtausend mal gut machen lassen, so dass du zumindest was die Aussage "ich gewinne" oder "ich verliere" zu recht brauchbaren Werten kommst. Nur für die genauen Wahrscheinlichkeiten müsste man erheblich mehr Proben ansetzen. Erheblich. Und Razz ist dabei noch ein vergleichsweise super-simpler Fall, da die Farben ja keine Rolle spielen
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)

Geändert von Medium (27. Sep 2010 um 01:11 Uhr)
  Mit Zitat antworten Zitat