In diesem Blogbeitrag möchte ich drei Macros vorstellen, die man für die Simulation eines Pokerspiels benutzen kann. Die Simulation von Spielen kann verschiedene Vorteile haben. Einerseits kann man im Fall vom Pokerspiel untersuchen, ob es sich tatsächlich um ein Glücksspiel handelt oder ob es Strategien gibt, mit derer man langfristig beim Pokern gewinnen kann. Wenn es Strategien gibt, helfen Simulationen dabei diese zu identifizieren.
Damit man ein Pokerspiel (oder irgendein anderes Kartenspiel) überhaupt starten kann, braucht man ein Kartendeck. Dieses erzeuge ich mit einem Create Deck Macro.
Ich weiß, dass die Farben und das generelle Design des Tools hätten besser ausfallen können. Jedoch möchte ich mich in diesem Beitrag lediglich auf die Funktionsweise der Tools fokussieren. Dieses Tool gibt eine Tabelle mit 52 Zeilen und 2 Spalten aus.
Jede Zeile entspricht einer Karte, die es in einem 52 Kartendeck gibt. Im nächsten Schritt braucht man ein Tool, das Karten aus dem Deck zieht. Dafür habe ich das Macro „Draw_N_Cards“ erstellt.
Als Input übernimmt dieses Tool ein Kartendeck, das z.B. mit dem Create_Deck Tool erstellt wurde. Dabei kann der User im Konfigurationsfenster selbst entscheiden, wie viele Karten aus dem Deck gezogen werden sollen.
Die K-Ausgabe gibt eine zufällige Tabelle mit Karten heraus, deren Anzahl der Zeilen durch die Eingabe bestimmt wird. Die D-Ausgabe gibt das verbleibende Deck wieder. Das folgende Beispiel zeigt den K-Output bei einer Eingabe von 2.
Mit diesen beiden Tools kann man jedem Spieler zwei Karten austeilen und gleichzeitig die fünf Gemeinschaftskarten, die jeder Spieler für die Bildung seines 5-Karten-Blattes benutzen darf, aus dem Deck ziehen. Allerdings muss man Alteryx noch beibringen, welcher Spieler gewonnen hat. Hier verwende ich das Who-Wins-Tool.
Dieses Tool übernimmt die Startkarten von Spieler 1 (Input-Anchor 1), die Startkarten von Spieler 2 (Input-Anchor 2) und die fünf Gemeinschaftskarten (Input-Anchor B) und gibt aus, ob Spieler 1/Spieler 2 gewonnen hat oder ob es ein unentschieden ist.
Beispiel:
Spieler 1:
Spieler 2:
Die 5 Gemeinschaftskarten:
Beste Hand Spieler 1: High Card – 5 Herz, 8 Pik, 7 Kreuz, A Karo, K Kreuz
Beste Hand Spieler 2: High Card – 8 Kreuz, 9 Karo, 7 Kreuz, A Karo, K Kreuz
Ergebnis: Spieler 2 gewinnt
In den nächsten Schritten kann man Macros erstellen, die einen Player erzeugen. Dieser definiert sich über ein Strategieprofil, welches man im Konfigurationsfenster eingeben könnte. Anschließend könnte man mit einem Iterative Macro zwei Spieler gegeneinander antreten lassen und beobachten, ob ein Spieler über einen längeren Zeitraum strukturell signifikante Gewinne erzielt. Wäre dem so, ist Poker kein Glückspiel, weil das Ergebnis über einen längeren Zeitraum nicht vom Zufall dominiert wird, sondern von Strategien. Erzeugt man mehrere Spieler mit unterschiedlichen Spielstrategien, könnte man sie in Turnieren gegeneinander antreten lassen und schauen, welche Spielstrategie die höchsten Gewinne erzielt.
Eine spannende Untersuchung wäre auch, dass man sowohl statische als auch dynamische Strategien gegeneinander antreten lässt und prüft, ob es zu Equilibriums kommt.