@ Programmierer vom Equilator:
hab nun herausgefunden, was der Fehler ist:
Ihr teilt die Random-Hände offensichtlich so aus (offensichtlich, da ich auf eure Werte komme, wenn ich in meinem Programm die Hände genauso verteile):
Ihr wählt eine zufällige Reihenfolge aus in der die Spieler eine Hande aus ihrer Handrange erhalten sollen. Ihr ermittelt dann für jeden Spieler solange eine Hand aus seiner Handrange bis diese Hand kompatibel mit den Händen der vorangegangenen Spielern ist, bis also in der ausgewählten Hand eines Spielers keine Karte aus der Hand eines vorangeganenen Spielers vorkommt.
Der erste hat damit eine Gleichverteilung für jede Hand seiner Handrange. Der zweite allerdings schon nicht mehr, da alle Hände wegfallen, in denen eine Karte vorkommt, die schon Spieler eins hält. Usw.
Damit hängt die Wahrscheinlichkeitsverteilung der Hände einer Handrange von der Reihenfolge ab in der sie Spieler die Karten erhalten. Die Reihenfolge wird allerings nach Gleichverteilung ermittelt und genau da ist das Problem!!!
Illustration am Bsp: AsAc,AhTh vs. AsAc,KsKc
Spieler 1 und 2 erhalten gleichoft (jeweils mit Wahrscheinlichkeit 0.5) als erster eine Hand aus ihrer Handrange.
1) Ist Spieler 1 (0.5) zuerst dran, so bekommt er (gleichverteilt) eine der folgenden Hände:
AsAc (0.5)
AhTh (0.5)
1a) Spieler 1 hat AsAc erhalten
Spieler 2 erhält dann auf jeden Fall
KsKc (1)
-> match-up in diesem Fall: AsAc vs KsKc
Wahrscheinlichkeit dieses Falls: 0.5*0.5*1
1b) Spieler 1 hat AhTh erhalten
Spieler 2 erhält dann (gleichverteilt) eine Hand aus:
AsAc (0.5)
-> match-up in diesem Fall: AhTh vs AsAc
Wahrscheinlichkeit dieses Falls: 0.5*0.5*0.5
KsKc (0.5)
-> match-up in diesem Fall: AhTh vs KsKc
Wahrscheinlichkeit dieses Falls: 0.5*0.5*0.5
2) Ist Spieler 2 (0.5) ist zuerst dran, so bekommt er (gleichverteilt) eine der folgenden Hände:
AsAc (0.5)
KsKc (0.5)
2a) Spieler 2 hat AsAc erhalten
Spieler 1 erhält dann auf jeden Fall
AhTh (1)
-> match-up in diesem Fall: AhTh vs AsAc
Wahrscheinlichkeit dieses Falls: 0.5*0.5*1
2b) Spieler 2 hat KsKc erhalten
Spieler 1 erhält dann (gleichverteilt) eine Hand aus:
AsAc (0.5)
-> match-up in diesem Fall: AsAc vs KsKc
Wahrscheinlichkeit dieses Falls: 0.5*0.5*0.5
AhTh (0.5)
-> match-up in diesem Fall: AhTh vs KsKc
Wahrscheinlichkeit dieses Falls: 0.5*0.5*0.5
Damit ergibt sich folgende Gesamtwahrscheinlichkeitsverteilung aller mgl. Match-ups:
AsAc vs KsKc : 0.5*0.5*1 + 0.5*0.5*0.5 = 0.25 + 0.125 = 0.375
AhTh vs AsAc : 0.5*0.5*0.5 + 0.5*0.5*1 = 0.125 +0.25 = 0.375
AhTh vs KsKc : 0.5*0.5*0.5 + 0.5*0.5*0.5 = 0.25
Es müsste aber jedes Match-up gleichwahrscheinlich sein.
Eine Lösung, die ich (und wohl auch Pokerstove) verwendet ist folgende:
Wähle für jeden Spieler (unabhängig von den Vorgängern) eine Hand aus der Handrange. Falls mind. eine Karte doppelt verteilt wurde, wähle für alle Spieler neue Hände, usw. bis keine Karte doppelt verteilt ist.
Dies drückt die Geschwindigkeit bei vielen Spielern, da dann die Wahrscheinlichkeit einer Doppeltverteilung von Karten recht hoch ist.