{ "metadata": { "name": "", "signature": "sha256:2e964d50d82280b8fd213950c01d59c3a462d911d7edd2fcb5fdb22c62740332" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Being in Las Vegas, it's difficult to think about poker and not ask yourself \"How does it really work? What are the odds of winning with a given hand?\". Therefore, this post is devoted to an attempt at implementing a poker simulation." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Below, I collected a set of references that I have used while writing this post: \n", "\n", "- Wikipedia article on poker hands [http://en.wikipedia.org/wiki/List_of_poker_hands](http://en.wikipedia.org/wiki/List_of_poker_hands)\n", "- [http://stackoverflow.com/questions/5874228/picking-the-best-hand-out-of-7-cardspoker-texas-holdem](http://stackoverflow.com/questions/5874228/picking-the-best-hand-out-of-7-cardspoker-texas-holdem): this is where I got the main idea for how to code this\n", "- [http://www.tightpoker.com/poker_odds.html](http://www.tightpoker.com/poker_odds.html): an introduction to poker odds\n", "- [http://stackoverflow.com/questions/10363927/the-simplest-algorithm-for-poker-hand-evaluation](http://stackoverflow.com/questions/10363927/the-simplest-algorithm-for-poker-hand-evaluation): a full Python solution of evaluating 5 card poker hands" ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "The card game model" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To start off, we're going to need to model a card game. A deck of cards is modelled as a sequence of cards. I chose to model an individual card using a tuple containing the suite of the card and its value. There are four suits: clubs, diamonds, hearts and spades. The suite is coded using initials `c`, `d`, `h` and `s`. Then there are 13 ranks, which are coded by their number for cards 2-10 and 11-14 for jacks, queens, kings and the ace. \n", "\n", "Based on this, we can write the following function, which generates a new game:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def new_card_game():\n", " game = []\n", " for suite in ('c', 'd', 'h', 's'):\n", " for rank in range(2, 15):\n", " game.append((suite, rank))\n", " return game" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "game = new_card_game()\n", "game[:5]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 2, "text": [ "[('c', 2), ('c', 3), ('c', 4), ('c', 5), ('c', 6)]" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "To shuffle a card game, we simply use the built-in `shuffle` function." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from random import shuffle" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "shuffle(game)\n", "game[:5]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 4, "text": [ "[('c', 6), ('s', 3), ('c', 4), ('h', 9), ('d', 10)]" ] } ], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can thus define a new shuffled deck method:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def new_shuffled_card_game():\n", " game = new_card_game()\n", " shuffle(game)\n", " return game" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Detecting poker hands" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What we now need is a way to compare strenghts of different poker hands. To code this, I am following the advice found [here](http://stackoverflow.com/questions/5874228/picking-the-best-hand-out-of-7-cardspoker-texas-holdem): I will code a comparator that checks whether a given combination is present or not. To start, I'm going to code the elementary functions will detect the standard hands found in poker:\n", "\n", "- straight flush\n", "- four of a kind\n", "- full house\n", "- flush\n", "- straight\n", "- three of a kind\n", "- two pair\n", "- one pair\n", "- high card\n", "\n", "I set myself the following specifications for the functions that will follow below:\n", "\n", "- each of these function takes a sequence of cards as an input (not necessarily five)\n", "- each function uses a tuple as output with two things\n", " - a boolean that says whether the category was detected in the cards\n", " - a rank linked to the category, that makes it possible to compare cards within their category" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's start by inplementing how to check for a four of a kind. To do this, we count the number of occurences of a given card in the hand, using the built-in Python `Counter`." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from collections import Counter" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "def contains_four_of_a_kind(hand):\n", " if len(hand) < 4: \n", " return (False, None)\n", " cnt = Counter([card[1] for card in hand])\n", " fours = filter(lambda item: item[1]==4, cnt.most_common())\n", " if fours != []:\n", " return (True, max(fours, key=lambda item: item[0])[0])\n", " else:\n", " return (False, None)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "print contains_four_of_a_kind([('c', 4), ('c', 5), ('c', 6), ('c', 7), ('c', 8)])\n", "print contains_four_of_a_kind([('c', 4), ('s', 4), ('d', 4), ('h', 4), ('c', 8)])\n", "print contains_four_of_a_kind([('c', 4), ('s', 4), ('d', 4), ('h', 4), ('c', 8),\n", " ('c', 9), ('s', 9), ('d', 9), ('h', 9), ('c', 11)])" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(False, None)\n", "(True, 4)\n", "(True, 9)\n" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "To check for a full house, we proceed as with the previous function and count the occurences of cards in the hand, but verify that the two most common cards are present 3 and 2 times." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def contains_full_house(hand):\n", " if len(hand) < 5:\n", " return (False, None)\n", " cnt = Counter([card[1] for card in hand])\n", " most_common = cnt.most_common()\n", " threes = filter(lambda item: item[1]==3, most_common)\n", " twos = filter(lambda item: item[1]==2, most_common)\n", " if threes != [] and twos != []:\n", " return (True, max(threes, key=lambda item: item[1])[0])\n", " else:\n", " return (False, None)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "print contains_full_house([('c', 4), ('s', 4), ('d', 5), ('h', 5), ('c', 5)])\n", "print contains_full_house([('c', 4), ('s', 4), ('d', 5), ('h', 5), ('c', 5), \n", " ('d', 10), ('h', 10), ('c', 10)])" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(True, 5)\n", "(True, 10)\n" ] } ], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The flush is detected by counting the number of cards by suites and then making sure there are at least five of the most common suite." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def contains_flush(hand):\n", " if len(hand) < 5: \n", " return (False, None)\n", " cnt = Counter([card[0] for card in hand])\n", " fives = filter(lambda item: item[1]==5, cnt.most_common())\n", " if fives != []:\n", " suite = max([item[0] for item in fives])\n", " return (True, max([item[1] for item in hand if item[0] == suite]))\n", " else:\n", " return (False, None)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "print contains_flush([('c', 2), ('h', 14), ('d', 3), ('d', 4), ('d', 5)])\n", "print contains_flush([('c', 2), ('c', 14), ('c', 3), ('c', 4), ('c', 5)])" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(False, None)\n", "(True, 14)\n" ] } ], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The straight is detected by sorting the cards on hand, then taking only unique cards using the Python built-in `set` (meaning only one 3, even if there are five of them) and finally checking whether there are five increasing numbers in a row, using the `range` function." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def contains_straight(hand):\n", " sorted_hand = sorted(set([card[1] for card in hand]))\n", " if len(sorted_hand) < 5:\n", " return (False, None)\n", " if 14 in sorted_hand: # taking into account that the ace can be a one\n", " sorted_hand.insert(0, 1)\n", " for shift in range(len(sorted_hand) - 4):\n", " if sorted_hand[shift: shift + 5] == range(sorted_hand[shift], sorted_hand[shift] + 5):\n", " return (True, sorted_hand[shift + 4])\n", " return (False, None)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 13 }, { "cell_type": "code", "collapsed": true, "input": [ "print contains_straight([('d', 2), ('d', 3), ('d', 4), ('d', 5), ('d', 6)])\n", "print contains_straight([('d', 2), ('h', 4), ('d', 3), ('d', 5), ('d', 6)])\n", "print contains_straight([('d', 2), ('h', 14), ('d', 3), ('d', 5), ('d', 6)])\n", "print contains_straight([('c', 2), ('h', 14), ('d', 3), ('d', 4), ('d', 5)]) # a hand with an ace\n", "print contains_straight([('d', 13), ('s', 2), ('s', 13), ('c', 13), ('d', 2), ('c', 2), ('h', 13)]) # previously bugged\n", "print contains_straight([('c', 5), ('c', 8), ('h', 12), ('h', 9), ('s', 5), \n", " ('s', 8), ('d', 8), ('d', 9), ('c', 9), ('s', 4)]) # previously bugged" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(True, 6)\n", "(True, 6)\n", "(False, None)\n", "(True, 5)\n", "(False, None)\n", "(False, None)\n" ] } ], "prompt_number": 14 }, { "cell_type": "markdown", "metadata": {}, "source": [ "For three of a kind, we proceed in a similar fashion than for four of a kind." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def contains_three_of_a_kind(hand):\n", " if len(hand) < 3: \n", " return (False, None)\n", " cnt = Counter([card[1] for card in hand])\n", " threes = filter(lambda item: item[1]==3, cnt.most_common())\n", " if threes != []:\n", " return (True, max([item[0] for item in threes]))\n", " else:\n", " return (False, None)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 15 }, { "cell_type": "code", "collapsed": false, "input": [ "print contains_three_of_a_kind([('c', 2), ('h', 3), ('c', 3), ('d', 3), ('d', 5)])\n", "print contains_three_of_a_kind([('c', 5), ('h', 5), ('c', 3), ('d', 3), ('d', 5)])" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(True, 3)\n", "(True, 5)\n" ] } ], "prompt_number": 16 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's move on to two pairs, which is inspired from the code for full house." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def contains_two_pairs(hand):\n", " if len(hand) < 4:\n", " return (False, None)\n", " cnt = Counter([card[1] for card in hand])\n", " pairs = filter(lambda item: item[1]==2, cnt.most_common())\n", " if len(pairs) > 1:\n", " return (True, max([item[0] for item in pairs])) \n", " else:\n", " return (False, None)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 17 }, { "cell_type": "code", "collapsed": false, "input": [ "print contains_two_pairs([('c', 4), ('h', 4), ('h', 11), ('s', 14), ('c', 14)])\n", "print contains_two_pairs([('c', 4), ('h', 4), ('h', 11), ('s', 11), ('c', 14)])\n", "print contains_two_pairs([('c', 4), ('h', 3), ('h', 11), ('s', 14), ('c', 14)])" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(True, 14)\n", "(True, 11)\n", "(False, None)\n" ] } ], "prompt_number": 18 }, { "cell_type": "markdown", "metadata": {}, "source": [ "One pair draws on a similar logic:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def contains_one_pair(hand):\n", " if len(hand) < 2:\n", " return (False, None)\n", " cnt = Counter([card[1] for card in hand])\n", " pairs = filter(lambda item: item[1]==2, cnt.most_common())\n", " if len(pairs) > 0:\n", " return (True, max([item[0] for item in pairs]))\n", " else:\n", " return (False, None)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 19 }, { "cell_type": "code", "collapsed": false, "input": [ "print contains_one_pair([('c', 4), ('h', 4), ('h', 11), ('s', 14), ('c', 14)])\n", "print contains_one_pair([('c', 4), ('h', 2), ('h', 11), ('s', 3), ('c', 7)])" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(True, 14)\n", "(False, None)\n" ] } ], "prompt_number": 20 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We also implement a function that returns a high card. Obviously, that function should always be true and return as a rank the highest observed card." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def contains_high_card(hand):\n", " return (True, max([card[1] for card in hand]))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [ "print contains_high_card([('c', 3), ('h', 4), ('h', 11), ('s', 12), ('c', 14)])\n", "print contains_high_card([('c', 3), ('h', 4), ('h', 11), ('s', 12), ('c', 10)])" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(True, 14)\n", "(True, 12)\n" ] } ], "prompt_number": 22 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can finish this off by implementing the straight flush using the previously defined functions (even though this is not computationally optimal):" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def contains_straight_flush(hand):\n", " straight = contains_straight(hand)\n", " flush = contains_flush(hand)\n", " if straight[0] and flush[0]:\n", " return (True, straight[1])\n", " else:\n", " return (False, None)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 23 }, { "cell_type": "code", "collapsed": false, "input": [ "print contains_straight_flush([('c', 4), ('c', 5), ('c', 6), ('c', 7), ('c', 8)])\n", "print contains_straight_flush([('c', 4), ('c', 5), ('c', 2), ('c', 3), ('c', 14)])" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(True, 8)\n", "(True, 5)\n" ] } ], "prompt_number": 24 }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Writing the comparison function" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we have done this base work, we can move on to write the full hand comparison function. It works by assuming that you give at least two different hands as input and then checks in the right order whether a given hand is found among all hands. If not, it moves on to the next lower ranked hand, until" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def compare_hands(hands):\n", " \"\"\" Determines highest hand from given hands. \n", " Returns winning hand or tied hands\n", " \"\"\"\n", " ranking_functions = [contains_straight_flush, \n", " contains_four_of_a_kind,\n", " contains_full_house,\n", " contains_flush,\n", " contains_straight,\n", " contains_three_of_a_kind,\n", " contains_two_pairs,\n", " contains_one_pair,\n", " contains_high_card]\n", " \n", " for func in ranking_functions:\n", " ranks = [func(hand) + (hand,) for hand in hands]\n", " filtered_ranks = filter(lambda rank: rank[0], ranks)\n", " if filtered_ranks != []:\n", " if len(filtered_ranks) == 1: #only one hand wins\n", " return ('win', filtered_ranks[0][2], func.__name__)\n", " else: # more than one hand wins: need to compare according to strength\n", " strengths = sorted(filtered_ranks, key=lambda rank: rank[1])\n", " filtered_strengths = filter(lambda rank: rank[1]==strengths[-1][1], strengths)\n", " if len(filtered_strengths) == 1: #only one hand wins\n", " return ('win', filtered_strengths[0][2], func.__name__)\n", " else:\n", " return ('tie', [item[2] for item in filtered_strengths], func.__name__)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 25 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's sample the output from the previous function in a random two five card hands drawn against each other from a shuffled game." ] }, { "cell_type": "code", "collapsed": false, "input": [ "shuffle(game)\n", "hand1 = game[:5]\n", "shuffle(game)\n", "hand2 = game[:5]\n", "compare_hands([hand1, hand2])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 26, "text": [ "('win',\n", " [('s', 12), ('h', 13), ('c', 13), ('h', 7), ('d', 2)],\n", " 'contains_one_pair')" ] } ], "prompt_number": 26 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's also time the previous function to see how quick the process is." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%%timeit\n", "shuffle(game)\n", "hand1 = game[:5]\n", "shuffle(game)\n", "hand2 = game[:5]\n", "compare_hands([hand1, hand2])" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1000 loops, best of 3: 422 \u00b5s per loop\n" ] } ], "prompt_number": 27 }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "A first statistical simulation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Based on the previous work, we can already do a little bit of statistics. In the next example, we'll reuse the scenario we were considering: two players are playing against each other, each drawing five cards from a shuffled deck. They then compare their hands and thus determine the output. We will count the number of occurences of ties and wins, and also keep track of what the most common winning hand is." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "import pylab as pl" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 28 }, { "cell_type": "code", "collapsed": false, "input": [ "%%time\n", "winners = Counter()\n", "combinations = Counter()\n", "for i in range(100000):\n", " game = new_card_game()\n", " shuffle(game)\n", " hand1 = game[:5]\n", " hand2 = game[5:10]\n", " outcome = compare_hands([hand1, hand2])\n", " if outcome[0] != 'tie':\n", " if outcome[1] == hand1:\n", " winners['player 1'] += 1\n", " else:\n", " winners['player 2'] += 1\n", " else:\n", " winners['tie'] += 1\n", " combinations[outcome[2]] += 1" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Wall time: 29 s\n" ] } ], "prompt_number": 29 }, { "cell_type": "markdown", "metadata": {}, "source": [ "This can be plotted in the following way:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "combinations" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 30, "text": [ "Counter({'contains_one_pair': 60214, 'contains_high_card': 25180, 'contains_two_pairs': 9000, 'contains_three_of_a_kind': 4116, 'contains_straight': 755, 'contains_flush': 376, 'contains_full_house': 297, 'contains_four_of_a_kind': 59, 'contains_straight_flush': 3})" ] } ], "prompt_number": 30 }, { "cell_type": "code", "collapsed": false, "input": [ "pl.figure(figsize=(10, 4))\n", "pl.subplot(121)\n", "sorted_combinations = sorted(combinations.items(), key=lambda item: item[1])\n", "pl.bar(range(len(sorted_combinations)),\n", " [item[1] for item in sorted_combinations])\n", "ticks = pl.xticks()\n", "pl.xticks(ticks[0] + 0.5, [item[0] for item in sorted_combinations], rotation='vertical')\n", "pl.ylabel('number of occurences')\n", "pl.title('wins by hands')\n", "\n", "pl.subplot(122)\n", "pl.bar(range(len(winners.keys())),\n", " winners.values()) \n", "pl.xticks([0.5, 1.5, 2.5], winners.keys())\n", "pl.ylabel('number of occurences')\n", "pl.title('wins by players')\n", "\n", "pl.tight_layout()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 31 }, { "cell_type": "markdown", "metadata": {}, "source": [ "As expected, the sequence of winning combinations appears as in the rules, which is indeed, after that test, its probability (from rare to frequent): straight flush, four of a kind, full house, flush, straight, three of a kind, two pairs, high card, one pair. \n", "\n", "Actually, I'm surprised by one thing: why is the high card appearing less frequently than the two pairs? " ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Calculating the odds of winning with a given hand: convergence plots" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we have the backbone of our simulation tool coded, we can try to ask more elaborate questions. Suppose we have a given pair of cards dealt to us. How do the odds of winning change between the following situations:\n", "\n", "- pre-flop\n", "- post-flop\n", "- post-turn\n", "- post-river\n", "\n", "The way we approach the problem is quite easy. We:\n", "\n", "- setup a table with `n` players\n", "- setup the card game so that we start with a given hand\n", "- deal cards to the other players\n", "- compare relative strengths of hands pre-flop, post-flop, post-turn, post-river\n", "- do this a great number of times to get average odds" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def winning_odds(starting_hand, opponent_number, number_of_games=100):\n", " wins = Counter()\n", "\n", " for i in range(number_of_games):\n", " game = new_card_game()\n", " shuffle(game)\n", " for card in starting_hand:\n", " game.remove(card)\n", " opponent_cards = [[game.pop(), game.pop()] for player in range(opponent_number)]\n", " \n", " # pre-flop odds\n", " all_hands = [starting_hand] + opponent_cards\n", " outcome = compare_hands(all_hands)\n", " if outcome[0] == 'win' and outcome[1] == all_hands[0] or outcome[0] == 'tie' and all_hands[0] in outcome[1]:\n", " wins['pre-flop'] += 1\n", " \n", " # post-flop odds\n", " flop = [game.pop(), game.pop(), game.pop()]\n", " all_hands = [hand + flop for hand in all_hands]\n", " outcome = compare_hands(all_hands)\n", " if outcome[0] == 'win' and outcome[1] == all_hands[0] or outcome[0] == 'tie' and all_hands[0] in outcome[1]:\n", " wins['post-flop'] += 1\n", " \n", " # post-turn odds\n", " turn = [game.pop()]\n", " all_hands = [hand + turn for hand in all_hands]\n", " outcome = compare_hands(all_hands)\n", " if outcome[0] == 'win' and outcome[1] == all_hands[0] or outcome[0] == 'tie' and all_hands[0] in outcome[1]:\n", " wins['post-turn'] += 1\n", " \n", " # post-river odds\n", " river = [game.pop()]\n", " all_hands = [hand + river for hand in all_hands]\n", " outcome = compare_hands(all_hands)\n", " if outcome[0] == 'win' and outcome[1] == all_hands[0] or outcome[0] == 'tie' and all_hands[0] in outcome[1]:\n", " wins['post-river'] += 1\n", " return wins" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 32 }, { "cell_type": "code", "collapsed": false, "input": [ "winning_odds([('c', 14), ('d', 10)],\n", " 3,\n", " number_of_games=1000)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 33, "text": [ "Counter({'pre-flop': 843, 'post-flop': 437, 'post-turn': 411, 'post-river': 390})" ] } ], "prompt_number": 33 }, { "cell_type": "code", "collapsed": false, "input": [ "%%time\n", "number_of_games = pl.linspace(10, 1000, num=20).astype(pl.int32)\n", "results = [winning_odds([('c', 14), ('d', 10)],\n", " 4, n) for n in number_of_games]\n", "pre_flop = [result['pre-flop'] / float(n) for (result, n) in zip(results, number_of_games)]\n", "post_flop = [result['post-flop'] / float(n) for (result, n) in zip(results, number_of_games)]\n", "post_turn = [result['post-turn'] / float(n) for (result, n) in zip(results, number_of_games)]\n", "post_river = [result['post-river'] / float(n) for (result, n) in zip(results, number_of_games)]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Wall time: 15.1 s\n" ] } ], "prompt_number": 34 }, { "cell_type": "code", "collapsed": false, "input": [ "pl.plot(number_of_games, pre_flop, label='pre-flop')\n", "pl.plot(number_of_games, post_flop, label='post-flop')\n", "pl.plot(number_of_games, post_turn, label='post-turn')\n", "pl.plot(number_of_games, post_river, label='post-river')\n", "pl.xlabel('number of games played')\n", "pl.ylabel('odds of winning')\n", "pl.title(\"hand: {0}, number of players: {1}\".format([('c', 14), ('d', 10)], 4 + 1))\n", "pl.xlim(0, number_of_games.max())\n", "pl.ylim(0, 1)\n", "pl.grid(True)\n", "pl.legend(loc='center left')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 35, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 35 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we have tested this on a small scale, we can write a more general function that automates the previous computation for a given starting hand:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def plot_convergence(starting_hand, opponent_number, number_of_games):\n", " results = [winning_odds(starting_hand,\n", " opponent_number, \n", " n) for n in number_of_games]\n", " pre_flop = [result['pre-flop'] / float(n) for (result, n) in zip(results, number_of_games)]\n", " post_flop = [result['post-flop'] / float(n) for (result, n) in zip(results, number_of_games)]\n", " post_turn = [result['post-turn'] / float(n) for (result, n) in zip(results, number_of_games)]\n", " post_river = [result['post-river'] / float(n) for (result, n) in zip(results, number_of_games)]\n", " pl.plot(number_of_games, pre_flop, \"-o\", label='pre-flop')\n", " pl.plot(number_of_games, post_flop, \"-o\", label='post-flop')\n", " pl.plot(number_of_games, post_turn, \"-o\", label='post-turn')\n", " pl.plot(number_of_games, post_river, \"-o\", label='post-river')\n", " pl.xlabel('number of games played')\n", " pl.ylabel('odds of winning')\n", " pl.title(\"hand: {0}, number of players: {1}\".format(starting_hand, opponent_number + 1))\n", " pl.xlim(0, number_of_games.max())\n", " pl.ylim(0, 1)\n", " pl.grid(True)\n", " pl.legend(loc='center left')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 36 }, { "cell_type": "markdown", "metadata": {}, "source": [ "For instance, in the plot below, we check that the odds are symmetric with respect to interchanging the two cards from the hand used in the previous plot." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%%time\n", "plot_convergence([('d', 10), ('c', 14)], 4, pl.linspace(10, 1000, num=20).astype(pl.int32))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Wall time: 15.4 s\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nRMQt/gWBRvAypW/scgAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 37 }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the next plot, we examine the convergence plot of the odds for two different hands whose only difference is that one is of the same suite, the other is not." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%%time\n", "pl.figure(figsize=(10, 6))\n", "pl.subplot(121)\n", "plot_convergence([('d', 14), ('c', 10)], 4, pl.array([10, 100, 1000, 2000, 5000]))\n", "pl.subplot(122)\n", "plot_convergence([('d', 14), ('d', 10)], 4, pl.array([10, 100, 1000, 2000, 5000]))\n", "pl.tight_layout()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Wall time: 25.2 s\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nYREREREREREREREREREREREREREREREREREREREREREREQmw/wVyBlu/HI9uGgAAAABJRU5ErkJg\ngg==\n", "text": [ "" ] } ], "prompt_number": 38 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Well, it seems that the difference is subtle: pre-flop it should absolutely be the same, as there are only pairs that can be played. However we notice that the previous plot shows a little higher odds after the flop for the same As/10 of same suit." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A question that came up during my stay in Las Vegas was: how likely is it to lose with Ace/King (different suites)? During the tournament, this hand lost to a pair of Queens." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%%time\n", "plot_convergence([('h', 14), ('s', 13)], 6, pl.array([10, 100, 500, 1000, 5000]))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Wall time: 13.4 s\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n5szz7rvvsm7dOi644AIeeOABLrnkkrB3O8kMoSaiCxPRRWgYD7yEnvn1v8DfAd9LqAUGn4GacCQ9\nPV09+uijqmfPnqpVq1YqNzdXHT9+XCml1DPPPKMyMjJU69at1ZAhQ1RJSYlSSqmVK1eqc889VyUn\nJ6u2bduqsWPHqqNHjyqllNq2bZvq1auXatWqlbr22mu93nPu3Lnqsssucx6vXr1apaWlOY+/+eYb\nlZmZqVq2bKnOOuss9fbbbzvP5ebmqgkTJqirrrpKJScnq8zMTLVr1646P3e4fh+CEK1gUzC7Lm/s\ndUCvFXE3kIp2SQUL45ndCdc3gbt168aLL77I5ZfXtrZTeDBu3Dg6d+7s94U+K8h6FKFDdGEiujAJ\n5pvZLwJnAgeAD4HrgI0NvbEQPoSjsRUEIXyw8sJda7RB+QW9BsVP6MWMhEZCTExMjYB5JCCtRhPR\nhYnown7qUjucCQwE7kCvWNfZf3ZbiSjXU7Qi34cghBfBXI9iCDAL+BdwK7AK+FtDbywIDUXGy5uI\nLkxEF/ZjJUaRA3wAPAGE9xtYgiAIgu1EimNaXE8RgHwfghBeBNP1JAiCIEQxYiiEiEV80SaiCxPR\nhf34MxQrjc9ZwRBEEARBCE/8+a6+Bf6AHu002sjr6oD+PIByeRLVMQorS6FOmzaN4uJi5s2bF0TJ\n3ImW70MQIoVgvJk9FT0MthN6fidPBjT05oFibUEBhbNnE19RQWViItn5+fS3MB233WVEEpWVlcTH\nWxkEJwiCUJNweGfC54RXnqxZulRNzshQCpzb5IwMtWbpUssTaTW0jK5du6oZM2aonj17qtTUVDVu\n3DhVXl6ulFLqueeeU6eeeqpq3bq1Gjp0qCotLXVed8cdd6h27dqpFi1aqHPOOUd9/fXX6tlnn1UJ\nCQmqSZMmKjk5WQ0dOrTG/d577z3VpEkTlZCQoJKTk1WvXr2ccrz//vvOfFOnTlVjx45VSim1c+dO\nFRMTo1588UXVpUsX1b9/fzV37lzVt29fdffdd6vU1FTVrVs39d5771nWm6/vKVCsXr06qPcLZ0QX\nJqILE2yaFNBKMPt/gWHoXsVj6BfwwpbC2bOZXlzslja9uJgVc+YEtYxXX32VwsJCiouL2bp1Kw8/\n/DCrVq1i8uTJvPHGG+zbt4+uXbsycuRIAJYvX84HH3zAtm3bOHz4MG+88QZt2rTh1ltvZcyYMdx7\n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\n", "text": [ "" ] } ], "prompt_number": 39 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Another interesting plot is below: the odds for winning with a pair of aces. In fact, if you have that pair, you should do everything you can to beat people out from the flop, because that's where you're most likely to win." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%%time\n", "plot_convergence([('h', 14), ('s', 14)], 6, pl.array([10, 100, 500, 1000, 5000]))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Wall time: 14.4 s\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 40 }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "A big table comparing stuff" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we have developed some tools to assess given hands, I want to move on to produce a table allowing to easily compare different hand behaviours between them. One thing I would like to know is whether a given hand is better pre-flop or better post-flop. To assess this, I'm going to compute a big table with all sorts of odds." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%%time\n", "OPPONENT_NUMBER = 6\n", "NUMBER_OF_GAMES = 1000\n", "\n", "data = {}\n", "first_cards = new_card_game()[:13]\n", "second_cards = new_card_game()[13:26]\n", "for first_card in first_cards:\n", " for second_card in second_cards:\n", " starting_hand = [first_card, second_card]\n", " result = winning_odds(starting_hand,\n", " OPPONENT_NUMBER, \n", " NUMBER_OF_GAMES) \n", " pre_flop = result['pre-flop'] / float(NUMBER_OF_GAMES)\n", " post_flop = result['post-flop'] / float(NUMBER_OF_GAMES)\n", " post_turn = result['post-turn'] / float(NUMBER_OF_GAMES)\n", " post_river = result['post-river'] / float(NUMBER_OF_GAMES)\n", " data[(first_card, second_card)] = [pre_flop, post_flop, post_turn, post_river]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Wall time: 8min 22s\n" ] } ], "prompt_number": 41 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's try to represent the previous data using an HTML table." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from IPython.display import HTML\n", "\n", "from collections import defaultdict\n", "\n", "def code_to_str(hand):\n", " suites = {'s': '♠', 'c': '♣',\n", " 'd': '♦', 'h': '♥'}\n", " numbers = dict(zip(range(2, 15), map(str, range(2, 11)) + ['jack', 'queen', 'king', 'ace']))\n", " \n", " if hand[0][1] == hand[1][1]:\n", " return \"Pair of \" + numbers[hand[0][1]]\n", " else:\n", " [low, high] = sorted(hand, key=lambda item: item[1])\n", " return \" \".join((suites[high[0]], \n", " numbers[high[1]],\n", " suites[low[0]],\n", " numbers[low[1]]))\n", "src = \"\"\"\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " {0}\n", "
HandChance of winning pre-flopChance of winning post-flopChance of winning post-turnChance of winning post-river
\"\"\".format(\"\".join([\"\"\"{0}\n", " {1[0]}\n", " {1[1]}\n", " {1[2]}\n", " {1[3]}\n", " \"\"\".format(code_to_str(item), data[item]) for item in sorted(data, \n", " key=lambda item: data[item][0], \n", " reverse=True)]))\n", "\n", "HTML(src)" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
HandChance of winning pre-flopChance of winning post-flopChance of winning post-turnChance of winning post-river
Pair of ace1.00.7350.5660.421
Pair of king0.9780.660.4890.369
Pair of queen0.9450.5910.4490.349
Pair of jack0.9140.490.3430.303
Pair of 100.870.4040.2970.271
Pair of 90.8670.4020.2980.268
Pair of 80.8370.3060.2470.24
Pair of 70.8290.3110.270.268
Pair of 60.790.2570.2220.227
Pair of 50.760.2220.230.245
♦ ace ♣ 90.7280.2360.2230.219
Pair of 40.7220.2020.2070.228
♣ ace ♦ 50.720.2270.20.208
Pair of 30.7160.2030.2260.247
♣ ace ♦ 70.7130.2240.2110.199
♣ ace ♦ 30.7120.2220.2180.215
♦ ace ♣ 100.7120.270.2540.257
♦ ace ♣ queen0.7110.2880.2730.264
♦ ace ♣ 50.710.2330.2240.216
♣ ace ♦ 20.7090.2130.1990.193
♣ ace ♦ queen0.7030.2830.2510.241
♣ ace ♦ 90.7030.2510.2290.209
♦ ace ♣ king0.6990.2980.2840.266
♦ ace ♣ 70.6970.2260.1970.21
♣ ace ♦ jack0.6970.260.2590.233
♣ ace ♦ 60.6960.230.2140.179
♦ ace ♣ 80.6950.240.2150.199
♦ ace ♣ 40.6890.2180.1950.205
Pair of 20.6870.1840.1940.219
♦ ace ♣ 20.6860.1870.180.193
♣ ace ♦ king0.6790.2950.2780.246
♦ ace ♣ 60.6780.2320.1930.19
♦ ace ♣ 30.6730.2180.2070.213
♦ ace ♣ jack0.6710.2970.2820.237
♣ ace ♦ 40.6710.2290.2170.204
♣ ace ♦ 80.670.250.2280.209
♣ ace ♦ 100.6590.2420.2240.213
♦ king ♣ jack0.250.2860.2880.263
♦ king ♣ 90.2410.2270.2240.23
♣ king ♦ 70.240.2150.1980.19
♦ king ♣ 100.2380.2530.2290.226
♣ king ♦ 20.2380.1870.1870.2
♦ king ♣ 20.2320.1520.1560.164
♣ king ♦ 50.2260.1620.1640.167
♣ king ♦ queen0.2210.2790.2690.272
♦ king ♣ 60.2180.2120.2130.211
♦ king ♣ 40.2180.1950.1870.18
♦ king ♣ 70.2170.2080.2030.203
♣ king ♦ 100.2170.2450.2420.236
♦ king ♣ 80.2170.20.1860.186
♣ king ♦ 90.2160.2180.2020.19
♦ king ♣ 50.2140.20.1980.184
♣ king ♦ 60.2090.1850.1690.176
♣ king ♦ jack0.2080.2770.2570.237
♣ king ♦ 80.2080.2130.20.176
♦ king ♣ 30.2070.170.1670.169
♦ king ♣ queen0.2050.2450.2540.256
♣ king ♦ 40.1950.2140.2010.207
♣ king ♦ 30.1910.1960.1810.186
♦ queen ♣ 60.0720.1960.1820.198
♦ queen ♣ 50.0720.1850.1770.178
♣ queen ♦ 100.0650.2210.2450.247
♣ queen ♦ 70.0620.1760.1860.182
♣ queen ♦ 30.0610.1580.1560.164
♣ queen ♦ jack0.0590.2340.2430.242
♦ queen ♣ 90.0590.2130.2030.188
♣ queen ♦ 90.0560.220.1990.206
♣ queen ♦ 40.0560.1750.1560.17
♦ queen ♣ 20.0560.1650.1450.156
♦ queen ♣ jack0.0560.2240.2320.239
♦ queen ♣ 40.0540.1910.180.183
♦ queen ♣ 70.0540.1810.1730.165
♦ queen ♣ 100.0530.2310.2340.238
♣ queen ♦ 80.0530.2110.1770.171
♣ queen ♦ 20.0510.1690.1620.162
♦ queen ♣ 30.0510.1650.1590.165
♦ queen ♣ 80.050.1980.1920.187
♣ queen ♦ 50.0490.1920.1710.163
♣ queen ♦ 60.0470.1910.1650.189
♣ jack ♦ 60.0170.160.1620.159
♦ jack ♣ 20.0150.1430.1420.149
♦ jack ♣ 30.0140.1450.1230.129
♦ jack ♣ 50.0140.1520.1380.149
♣ jack ♦ 40.0140.1620.1580.167
♦ jack ♣ 90.0140.2170.1910.215
♣ jack ♦ 20.0130.1260.1320.16
♣ jack ♦ 30.0130.1630.1440.165
♦ jack ♣ 100.0130.2040.20.219
♣ jack ♦ 100.0130.2070.2050.224
♦ jack ♣ 60.0120.1580.1480.156
♣ jack ♦ 50.0120.1560.1540.159
♦ jack ♣ 80.0120.20.1850.204
♣ jack ♦ 90.0120.2090.1910.203
♣ jack ♦ 80.010.1840.1720.179
♦ jack ♣ 70.0090.1850.1770.181
♣ jack ♦ 70.0090.1920.1680.187
♦ jack ♣ 40.0090.1470.1460.166
♣ 10 ♦ 40.0050.1380.1330.15
♣ 10 ♦ 80.0050.1770.1630.178
♣ 10 ♦ 60.0050.1720.1550.168
♣ 10 ♦ 70.0050.1930.1940.187
♣ 10 ♦ 50.0040.1550.1450.169
♦ 10 ♣ 90.0040.2260.2050.22
♦ 10 ♣ 70.0040.1920.170.179
♦ 10 ♣ 40.0030.1450.150.158
♦ 10 ♣ 60.0030.1470.1570.182
♦ 10 ♣ 80.0030.2070.1970.21
♦ 10 ♣ 50.0030.1650.1550.164
♣ 10 ♦ 30.0020.1490.1480.162
♣ 10 ♦ 20.0020.1420.1330.132
♦ 9 ♣ 40.0020.1490.1480.15
♦ 9 ♣ 80.0010.1570.1590.194
♦ 10 ♣ 30.0010.1340.1370.147
♦ 9 ♣ 60.0010.1660.1570.186
♣ 9 ♦ 80.0010.1840.1840.194
♦ 9 ♣ 70.0010.1790.160.18
♦ 10 ♣ 20.0010.1250.1440.161
♦ 8 ♣ 20.00.1140.1110.125
♦ 6 ♣ 30.00.1230.130.161
♣ 4 ♦ 20.00.1160.1210.149
♣ 8 ♦ 50.00.1280.1490.165
♣ 7 ♦ 40.00.1350.1480.177
♣ 7 ♦ 20.00.1220.1070.137
♦ 7 ♣ 50.00.1410.1530.162
♦ 9 ♣ 20.00.1420.1220.142
♣ 9 ♦ 50.00.1320.1150.141
♦ 4 ♣ 30.00.110.130.168
♦ 5 ♣ 40.00.1180.1290.161
♣ 5 ♦ 30.00.1260.1280.148
♣ 6 ♦ 30.00.110.1120.146
♦ 7 ♣ 20.00.1330.1360.135
♦ 5 ♣ 30.00.1020.1140.138
♣ 9 ♦ 60.00.1450.1410.136
♦ 7 ♣ 60.00.1440.1520.157
♣ 8 ♦ 20.00.1140.1090.124
♣ 7 ♦ 30.00.1270.1260.146
♦ 3 ♣ 20.00.0830.0860.12
♦ 9 ♣ 50.00.140.1360.162
♦ 8 ♣ 40.00.1290.1230.141
♣ 6 ♦ 20.00.1050.1240.121
♣ 8 ♦ 40.00.1360.1320.16
♦ 6 ♣ 50.00.1230.1260.154
♣ 8 ♦ 70.00.1750.1730.184
♣ 9 ♦ 70.00.1570.1710.186
♦ 9 ♣ 30.00.1390.1170.122
♣ 5 ♦ 40.00.1320.1410.176
♣ 7 ♦ 50.00.1530.1420.175
♣ 5 ♦ 20.00.1090.1140.145
♣ 9 ♦ 20.00.120.1220.142
♦ 8 ♣ 60.00.1710.1660.189
♦ 5 ♣ 20.00.1040.120.156
♣ 6 ♦ 40.00.120.1380.162
♦ 8 ♣ 30.00.1230.1060.118
♣ 6 ♦ 50.00.1290.130.149
♦ 6 ♣ 40.00.1160.1290.14
♣ 8 ♦ 60.00.1540.1560.162
♣ 10 ♦ 90.00.2040.1890.198
♦ 8 ♣ 50.00.1370.1380.159
♦ 7 ♣ 30.00.1210.1220.133
♣ 8 ♦ 30.00.1280.1110.125
♣ 9 ♦ 40.00.1280.1160.127
♦ 8 ♣ 70.00.1740.1570.179
♣ 7 ♦ 60.00.1470.1530.191
♣ 4 ♦ 30.00.1160.140.165
♣ 9 ♦ 30.00.1320.1350.158
♦ 7 ♣ 40.00.140.1250.149
♣ 3 ♦ 20.00.1060.120.137
♦ 4 ♣ 20.00.1130.1160.139
♦ 6 ♣ 20.00.1050.1190.145
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 42, "text": [ "" ] } ], "prompt_number": 42 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The previous data was sorted by pre-flop chance of winning. But what about post-flop?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "src = \"\"\"\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " {0}\n", "
HandChance of winning pre-flopChance of winning post-flopChance of winning post-turnChance of winning post-river
\"\"\".format(\"\".join([\"\"\"{0}\n", " {1[0]}\n", " {1[1]}\n", " {1[2]}\n", " {1[3]}\n", " \"\"\".format(code_to_str(item), data[item]) for item in sorted(data, \n", " key=lambda item: data[item][1], \n", " reverse=True)]))\n", "\n", "HTML(src)" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
HandChance of winning pre-flopChance of winning post-flopChance of winning post-turnChance of winning post-river
Pair of ace1.00.7350.5660.421
Pair of king0.9780.660.4890.369
Pair of queen0.9450.5910.4490.349
Pair of jack0.9140.490.3430.303
Pair of 100.870.4040.2970.271
Pair of 90.8670.4020.2980.268
Pair of 70.8290.3110.270.268
Pair of 80.8370.3060.2470.24
♦ ace ♣ king0.6990.2980.2840.266
♦ ace ♣ jack0.6710.2970.2820.237
♣ ace ♦ king0.6790.2950.2780.246
♦ ace ♣ queen0.7110.2880.2730.264
♦ king ♣ jack0.250.2860.2880.263
♣ ace ♦ queen0.7030.2830.2510.241
♣ king ♦ queen0.2210.2790.2690.272
♣ king ♦ jack0.2080.2770.2570.237
♦ ace ♣ 100.7120.270.2540.257
♣ ace ♦ jack0.6970.260.2590.233
Pair of 60.790.2570.2220.227
♦ king ♣ 100.2380.2530.2290.226
♣ ace ♦ 90.7030.2510.2290.209
♣ ace ♦ 80.670.250.2280.209
♦ king ♣ queen0.2050.2450.2540.256
♣ king ♦ 100.2170.2450.2420.236
♣ ace ♦ 100.6590.2420.2240.213
♦ ace ♣ 80.6950.240.2150.199
♦ ace ♣ 90.7280.2360.2230.219
♣ queen ♦ jack0.0590.2340.2430.242
♦ ace ♣ 50.710.2330.2240.216
♦ ace ♣ 60.6780.2320.1930.19
♦ queen ♣ 100.0530.2310.2340.238
♣ ace ♦ 60.6960.230.2140.179
♣ ace ♦ 40.6710.2290.2170.204
♦ king ♣ 90.2410.2270.2240.23
♣ ace ♦ 50.720.2270.20.208
♦ 10 ♣ 90.0040.2260.2050.22
♦ ace ♣ 70.6970.2260.1970.21
♣ ace ♦ 70.7130.2240.2110.199
♦ queen ♣ jack0.0560.2240.2320.239
Pair of 50.760.2220.230.245
♣ ace ♦ 30.7120.2220.2180.215
♣ queen ♦ 100.0650.2210.2450.247
♣ queen ♦ 90.0560.220.1990.206
♣ king ♦ 90.2160.2180.2020.19
♦ ace ♣ 40.6890.2180.1950.205
♦ ace ♣ 30.6730.2180.2070.213
♦ jack ♣ 90.0140.2170.1910.215
♣ king ♦ 70.240.2150.1980.19
♣ king ♦ 40.1950.2140.2010.207
♦ queen ♣ 90.0590.2130.2030.188
♣ king ♦ 80.2080.2130.20.176
♣ ace ♦ 20.7090.2130.1990.193
♦ king ♣ 60.2180.2120.2130.211
♣ queen ♦ 80.0530.2110.1770.171
♣ jack ♦ 90.0120.2090.1910.203
♦ king ♣ 70.2170.2080.2030.203
♦ 10 ♣ 80.0030.2070.1970.21
♣ jack ♦ 100.0130.2070.2050.224
♦ jack ♣ 100.0130.2040.20.219
♣ 10 ♦ 90.00.2040.1890.198
Pair of 30.7160.2030.2260.247
Pair of 40.7220.2020.2070.228
♦ king ♣ 50.2140.20.1980.184
♦ jack ♣ 80.0120.20.1850.204
♦ king ♣ 80.2170.20.1860.186
♦ queen ♣ 80.050.1980.1920.187
♦ queen ♣ 60.0720.1960.1820.198
♣ king ♦ 30.1910.1960.1810.186
♦ king ♣ 40.2180.1950.1870.18
♣ 10 ♦ 70.0050.1930.1940.187
♣ queen ♦ 50.0490.1920.1710.163
♣ jack ♦ 70.0090.1920.1680.187
♦ 10 ♣ 70.0040.1920.170.179
♣ queen ♦ 60.0470.1910.1650.189
♦ queen ♣ 40.0540.1910.180.183
♦ ace ♣ 20.6860.1870.180.193
♣ king ♦ 20.2380.1870.1870.2
♣ king ♦ 60.2090.1850.1690.176
♦ jack ♣ 70.0090.1850.1770.181
♦ queen ♣ 50.0720.1850.1770.178
♣ 9 ♦ 80.0010.1840.1840.194
♣ jack ♦ 80.010.1840.1720.179
Pair of 20.6870.1840.1940.219
♦ queen ♣ 70.0540.1810.1730.165
♦ 9 ♣ 70.0010.1790.160.18
♣ 10 ♦ 80.0050.1770.1630.178
♣ queen ♦ 70.0620.1760.1860.182
♣ 8 ♦ 70.00.1750.1730.184
♣ queen ♦ 40.0560.1750.1560.17
♦ 8 ♣ 70.00.1740.1570.179
♣ 10 ♦ 60.0050.1720.1550.168
♦ 8 ♣ 60.00.1710.1660.189
♦ king ♣ 30.2070.170.1670.169
♣ queen ♦ 20.0510.1690.1620.162
♦ 9 ♣ 60.0010.1660.1570.186
♦ 10 ♣ 50.0030.1650.1550.164
♦ queen ♣ 30.0510.1650.1590.165
♦ queen ♣ 20.0560.1650.1450.156
♣ jack ♦ 30.0130.1630.1440.165
♣ jack ♦ 40.0140.1620.1580.167
♣ king ♦ 50.2260.1620.1640.167
♣ jack ♦ 60.0170.160.1620.159
♦ jack ♣ 60.0120.1580.1480.156
♣ queen ♦ 30.0610.1580.1560.164
♦ 9 ♣ 80.0010.1570.1590.194
♣ 9 ♦ 70.00.1570.1710.186
♣ jack ♦ 50.0120.1560.1540.159
♣ 10 ♦ 50.0040.1550.1450.169
♣ 8 ♦ 60.00.1540.1560.162
♣ 7 ♦ 50.00.1530.1420.175
♦ jack ♣ 50.0140.1520.1380.149
♦ king ♣ 20.2320.1520.1560.164
♣ 10 ♦ 30.0020.1490.1480.162
♦ 9 ♣ 40.0020.1490.1480.15
♦ 10 ♣ 60.0030.1470.1570.182
♣ 7 ♦ 60.00.1470.1530.191
♦ jack ♣ 40.0090.1470.1460.166
♦ jack ♣ 30.0140.1450.1230.129
♦ 10 ♣ 40.0030.1450.150.158
♣ 9 ♦ 60.00.1450.1410.136
♦ 7 ♣ 60.00.1440.1520.157
♦ jack ♣ 20.0150.1430.1420.149
♦ 9 ♣ 20.00.1420.1220.142
♣ 10 ♦ 20.0020.1420.1330.132
♦ 7 ♣ 50.00.1410.1530.162
♦ 9 ♣ 50.00.140.1360.162
♦ 7 ♣ 40.00.140.1250.149
♦ 9 ♣ 30.00.1390.1170.122
♣ 10 ♦ 40.0050.1380.1330.15
♦ 8 ♣ 50.00.1370.1380.159
♣ 8 ♦ 40.00.1360.1320.16
♣ 7 ♦ 40.00.1350.1480.177
♦ 10 ♣ 30.0010.1340.1370.147
♦ 7 ♣ 20.00.1330.1360.135
♣ 9 ♦ 50.00.1320.1150.141
♣ 5 ♦ 40.00.1320.1410.176
♣ 9 ♦ 30.00.1320.1350.158
♦ 8 ♣ 40.00.1290.1230.141
♣ 6 ♦ 50.00.1290.130.149
♣ 8 ♦ 50.00.1280.1490.165
♣ 8 ♦ 30.00.1280.1110.125
♣ 9 ♦ 40.00.1280.1160.127
♣ 7 ♦ 30.00.1270.1260.146
♣ jack ♦ 20.0130.1260.1320.16
♣ 5 ♦ 30.00.1260.1280.148
♦ 10 ♣ 20.0010.1250.1440.161
♦ 6 ♣ 30.00.1230.130.161
♦ 6 ♣ 50.00.1230.1260.154
♦ 8 ♣ 30.00.1230.1060.118
♣ 7 ♦ 20.00.1220.1070.137
♦ 7 ♣ 30.00.1210.1220.133
♣ 9 ♦ 20.00.120.1220.142
♣ 6 ♦ 40.00.120.1380.162
♦ 5 ♣ 40.00.1180.1290.161
♣ 4 ♦ 20.00.1160.1210.149
♦ 6 ♣ 40.00.1160.1290.14
♣ 4 ♦ 30.00.1160.140.165
♦ 8 ♣ 20.00.1140.1110.125
♣ 8 ♦ 20.00.1140.1090.124
♦ 4 ♣ 20.00.1130.1160.139
♦ 4 ♣ 30.00.110.130.168
♣ 6 ♦ 30.00.110.1120.146
♣ 5 ♦ 20.00.1090.1140.145
♣ 3 ♦ 20.00.1060.120.137
♣ 6 ♦ 20.00.1050.1240.121
♦ 6 ♣ 20.00.1050.1190.145
♦ 5 ♣ 20.00.1040.120.156
♦ 5 ♣ 30.00.1020.1140.138
♦ 3 ♣ 20.00.0830.0860.12
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 43, "text": [ "" ] } ], "prompt_number": 43 }, { "cell_type": "markdown", "metadata": {}, "source": [ "And post-turn?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "src = \"\"\"\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " {0}\n", "
HandChance of winning pre-flopChance of winning post-flopChance of winning post-turnChance of winning post-river
\"\"\".format(\"\".join([\"\"\"{0}\n", " {1[0]}\n", " {1[1]}\n", " {1[2]}\n", " {1[3]}\n", " \"\"\".format(code_to_str(item), data[item]) for item in sorted(data, \n", " key=lambda item: data[item][2], \n", " reverse=True)]))\n", "\n", "HTML(src)" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
HandChance of winning pre-flopChance of winning post-flopChance of winning post-turnChance of winning post-river
Pair of ace1.00.7350.5660.421
Pair of king0.9780.660.4890.369
Pair of queen0.9450.5910.4490.349
Pair of jack0.9140.490.3430.303
Pair of 90.8670.4020.2980.268
Pair of 100.870.4040.2970.271
♦ king ♣ jack0.250.2860.2880.263
♦ ace ♣ king0.6990.2980.2840.266
♦ ace ♣ jack0.6710.2970.2820.237
♣ ace ♦ king0.6790.2950.2780.246
♦ ace ♣ queen0.7110.2880.2730.264
Pair of 70.8290.3110.270.268
♣ king ♦ queen0.2210.2790.2690.272
♣ ace ♦ jack0.6970.260.2590.233
♣ king ♦ jack0.2080.2770.2570.237
♦ king ♣ queen0.2050.2450.2540.256
♦ ace ♣ 100.7120.270.2540.257
♣ ace ♦ queen0.7030.2830.2510.241
Pair of 80.8370.3060.2470.24
♣ queen ♦ 100.0650.2210.2450.247
♣ queen ♦ jack0.0590.2340.2430.242
♣ king ♦ 100.2170.2450.2420.236
♦ queen ♣ 100.0530.2310.2340.238
♦ queen ♣ jack0.0560.2240.2320.239
Pair of 50.760.2220.230.245
♦ king ♣ 100.2380.2530.2290.226
♣ ace ♦ 90.7030.2510.2290.209
♣ ace ♦ 80.670.250.2280.209
Pair of 30.7160.2030.2260.247
♦ king ♣ 90.2410.2270.2240.23
♦ ace ♣ 50.710.2330.2240.216
♣ ace ♦ 100.6590.2420.2240.213
♦ ace ♣ 90.7280.2360.2230.219
Pair of 60.790.2570.2220.227
♣ ace ♦ 30.7120.2220.2180.215
♣ ace ♦ 40.6710.2290.2170.204
♦ ace ♣ 80.6950.240.2150.199
♣ ace ♦ 60.6960.230.2140.179
♦ king ♣ 60.2180.2120.2130.211
♣ ace ♦ 70.7130.2240.2110.199
♦ ace ♣ 30.6730.2180.2070.213
Pair of 40.7220.2020.2070.228
♦ 10 ♣ 90.0040.2260.2050.22
♣ jack ♦ 100.0130.2070.2050.224
♦ king ♣ 70.2170.2080.2030.203
♦ queen ♣ 90.0590.2130.2030.188
♣ king ♦ 90.2160.2180.2020.19
♣ king ♦ 40.1950.2140.2010.207
♦ jack ♣ 100.0130.2040.20.219
♣ king ♦ 80.2080.2130.20.176
♣ ace ♦ 50.720.2270.20.208
♣ queen ♦ 90.0560.220.1990.206
♣ ace ♦ 20.7090.2130.1990.193
♣ king ♦ 70.240.2150.1980.19
♦ king ♣ 50.2140.20.1980.184
♦ ace ♣ 70.6970.2260.1970.21
♦ 10 ♣ 80.0030.2070.1970.21
♦ ace ♣ 40.6890.2180.1950.205
Pair of 20.6870.1840.1940.219
♣ 10 ♦ 70.0050.1930.1940.187
♦ ace ♣ 60.6780.2320.1930.19
♦ queen ♣ 80.050.1980.1920.187
♦ jack ♣ 90.0140.2170.1910.215
♣ jack ♦ 90.0120.2090.1910.203
♣ 10 ♦ 90.00.2040.1890.198
♦ king ♣ 40.2180.1950.1870.18
♣ king ♦ 20.2380.1870.1870.2
♦ king ♣ 80.2170.20.1860.186
♣ queen ♦ 70.0620.1760.1860.182
♦ jack ♣ 80.0120.20.1850.204
♣ 9 ♦ 80.0010.1840.1840.194
♦ queen ♣ 60.0720.1960.1820.198
♣ king ♦ 30.1910.1960.1810.186
♦ ace ♣ 20.6860.1870.180.193
♦ queen ♣ 40.0540.1910.180.183
♦ jack ♣ 70.0090.1850.1770.181
♣ queen ♦ 80.0530.2110.1770.171
♦ queen ♣ 50.0720.1850.1770.178
♣ 8 ♦ 70.00.1750.1730.184
♦ queen ♣ 70.0540.1810.1730.165
♣ jack ♦ 80.010.1840.1720.179
♣ queen ♦ 50.0490.1920.1710.163
♣ 9 ♦ 70.00.1570.1710.186
♦ 10 ♣ 70.0040.1920.170.179
♣ king ♦ 60.2090.1850.1690.176
♣ jack ♦ 70.0090.1920.1680.187
♦ king ♣ 30.2070.170.1670.169
♦ 8 ♣ 60.00.1710.1660.189
♣ queen ♦ 60.0470.1910.1650.189
♣ king ♦ 50.2260.1620.1640.167
♣ 10 ♦ 80.0050.1770.1630.178
♣ jack ♦ 60.0170.160.1620.159
♣ queen ♦ 20.0510.1690.1620.162
♦ 9 ♣ 70.0010.1790.160.18
♦ 9 ♣ 80.0010.1570.1590.194
♦ queen ♣ 30.0510.1650.1590.165
♣ jack ♦ 40.0140.1620.1580.167
♦ 10 ♣ 60.0030.1470.1570.182
♦ 9 ♣ 60.0010.1660.1570.186
♦ 8 ♣ 70.00.1740.1570.179
♣ queen ♦ 30.0610.1580.1560.164
♣ queen ♦ 40.0560.1750.1560.17
♦ king ♣ 20.2320.1520.1560.164
♣ 8 ♦ 60.00.1540.1560.162
♣ 10 ♦ 60.0050.1720.1550.168
♦ 10 ♣ 50.0030.1650.1550.164
♣ jack ♦ 50.0120.1560.1540.159
♦ 7 ♣ 50.00.1410.1530.162
♣ 7 ♦ 60.00.1470.1530.191
♦ 7 ♣ 60.00.1440.1520.157
♦ 10 ♣ 40.0030.1450.150.158
♣ 8 ♦ 50.00.1280.1490.165
♣ 7 ♦ 40.00.1350.1480.177
♣ 10 ♦ 30.0020.1490.1480.162
♦ jack ♣ 60.0120.1580.1480.156
♦ 9 ♣ 40.0020.1490.1480.15
♦ jack ♣ 40.0090.1470.1460.166
♣ 10 ♦ 50.0040.1550.1450.169
♦ queen ♣ 20.0560.1650.1450.156
♣ jack ♦ 30.0130.1630.1440.165
♦ 10 ♣ 20.0010.1250.1440.161
♦ jack ♣ 20.0150.1430.1420.149
♣ 7 ♦ 50.00.1530.1420.175
♣ 9 ♦ 60.00.1450.1410.136
♣ 5 ♦ 40.00.1320.1410.176
♣ 4 ♦ 30.00.1160.140.165
♦ jack ♣ 50.0140.1520.1380.149
♣ 6 ♦ 40.00.120.1380.162
♦ 8 ♣ 50.00.1370.1380.159
♦ 10 ♣ 30.0010.1340.1370.147
♦ 7 ♣ 20.00.1330.1360.135
♦ 9 ♣ 50.00.140.1360.162
♣ 9 ♦ 30.00.1320.1350.158
♣ 10 ♦ 40.0050.1380.1330.15
♣ 10 ♦ 20.0020.1420.1330.132
♣ jack ♦ 20.0130.1260.1320.16
♣ 8 ♦ 40.00.1360.1320.16
♦ 6 ♣ 30.00.1230.130.161
♦ 4 ♣ 30.00.110.130.168
♣ 6 ♦ 50.00.1290.130.149
♦ 5 ♣ 40.00.1180.1290.161
♦ 6 ♣ 40.00.1160.1290.14
♣ 5 ♦ 30.00.1260.1280.148
♣ 7 ♦ 30.00.1270.1260.146
♦ 6 ♣ 50.00.1230.1260.154
♦ 7 ♣ 40.00.140.1250.149
♣ 6 ♦ 20.00.1050.1240.121
♦ jack ♣ 30.0140.1450.1230.129
♦ 8 ♣ 40.00.1290.1230.141
♦ 9 ♣ 20.00.1420.1220.142
♣ 9 ♦ 20.00.120.1220.142
♦ 7 ♣ 30.00.1210.1220.133
♣ 4 ♦ 20.00.1160.1210.149
♦ 5 ♣ 20.00.1040.120.156
♣ 3 ♦ 20.00.1060.120.137
♦ 6 ♣ 20.00.1050.1190.145
♦ 9 ♣ 30.00.1390.1170.122
♣ 9 ♦ 40.00.1280.1160.127
♦ 4 ♣ 20.00.1130.1160.139
♣ 9 ♦ 50.00.1320.1150.141
♦ 5 ♣ 30.00.1020.1140.138
♣ 5 ♦ 20.00.1090.1140.145
♣ 6 ♦ 30.00.110.1120.146
♦ 8 ♣ 20.00.1140.1110.125
♣ 8 ♦ 30.00.1280.1110.125
♣ 8 ♦ 20.00.1140.1090.124
♣ 7 ♦ 20.00.1220.1070.137
♦ 8 ♣ 30.00.1230.1060.118
♦ 3 ♣ 20.00.0830.0860.12
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 44, "text": [ "" ] } ], "prompt_number": 44 }, { "cell_type": "markdown", "metadata": {}, "source": [ "And post-river?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "src = \"\"\"\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " {0}\n", "
HandChance of winning pre-flopChance of winning post-flopChance of winning post-turnChance of winning post-river
\"\"\".format(\"\".join([\"\"\"{0}\n", " {1[0]}\n", " {1[1]}\n", " {1[2]}\n", " {1[3]}\n", " \"\"\".format(code_to_str(item), data[item]) for item in sorted(data, \n", " key=lambda item: data[item][3], \n", " reverse=True)]))\n", "\n", "HTML(src)" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
HandChance of winning pre-flopChance of winning post-flopChance of winning post-turnChance of winning post-river
Pair of ace1.00.7350.5660.421
Pair of king0.9780.660.4890.369
Pair of queen0.9450.5910.4490.349
Pair of jack0.9140.490.3430.303
♣ king ♦ queen0.2210.2790.2690.272
Pair of 100.870.4040.2970.271
Pair of 90.8670.4020.2980.268
Pair of 70.8290.3110.270.268
♦ ace ♣ king0.6990.2980.2840.266
♦ ace ♣ queen0.7110.2880.2730.264
♦ king ♣ jack0.250.2860.2880.263
♦ ace ♣ 100.7120.270.2540.257
♦ king ♣ queen0.2050.2450.2540.256
♣ queen ♦ 100.0650.2210.2450.247
Pair of 30.7160.2030.2260.247
♣ ace ♦ king0.6790.2950.2780.246
Pair of 50.760.2220.230.245
♣ queen ♦ jack0.0590.2340.2430.242
♣ ace ♦ queen0.7030.2830.2510.241
Pair of 80.8370.3060.2470.24
♦ queen ♣ jack0.0560.2240.2320.239
♦ queen ♣ 100.0530.2310.2340.238
♣ king ♦ jack0.2080.2770.2570.237
♦ ace ♣ jack0.6710.2970.2820.237
♣ king ♦ 100.2170.2450.2420.236
♣ ace ♦ jack0.6970.260.2590.233
♦ king ♣ 90.2410.2270.2240.23
Pair of 40.7220.2020.2070.228
Pair of 60.790.2570.2220.227
♦ king ♣ 100.2380.2530.2290.226
♣ jack ♦ 100.0130.2070.2050.224
♦ 10 ♣ 90.0040.2260.2050.22
♦ ace ♣ 90.7280.2360.2230.219
♦ jack ♣ 100.0130.2040.20.219
Pair of 20.6870.1840.1940.219
♦ ace ♣ 50.710.2330.2240.216
♣ ace ♦ 30.7120.2220.2180.215
♦ jack ♣ 90.0140.2170.1910.215
♦ ace ♣ 30.6730.2180.2070.213
♣ ace ♦ 100.6590.2420.2240.213
♦ king ♣ 60.2180.2120.2130.211
♦ ace ♣ 70.6970.2260.1970.21
♦ 10 ♣ 80.0030.2070.1970.21
♣ ace ♦ 80.670.250.2280.209
♣ ace ♦ 90.7030.2510.2290.209
♣ ace ♦ 50.720.2270.20.208
♣ king ♦ 40.1950.2140.2010.207
♣ queen ♦ 90.0560.220.1990.206
♦ ace ♣ 40.6890.2180.1950.205
♣ ace ♦ 40.6710.2290.2170.204
♦ jack ♣ 80.0120.20.1850.204
♦ king ♣ 70.2170.2080.2030.203
♣ jack ♦ 90.0120.2090.1910.203
♣ king ♦ 20.2380.1870.1870.2
♦ ace ♣ 80.6950.240.2150.199
♣ ace ♦ 70.7130.2240.2110.199
♦ queen ♣ 60.0720.1960.1820.198
♣ 10 ♦ 90.00.2040.1890.198
♦ 9 ♣ 80.0010.1570.1590.194
♣ 9 ♦ 80.0010.1840.1840.194
♦ ace ♣ 20.6860.1870.180.193
♣ ace ♦ 20.7090.2130.1990.193
♣ 7 ♦ 60.00.1470.1530.191
♣ king ♦ 70.240.2150.1980.19
♣ king ♦ 90.2160.2180.2020.19
♦ ace ♣ 60.6780.2320.1930.19
♣ queen ♦ 60.0470.1910.1650.189
♦ 8 ♣ 60.00.1710.1660.189
♦ queen ♣ 90.0590.2130.2030.188
♦ queen ♣ 80.050.1980.1920.187
♣ jack ♦ 70.0090.1920.1680.187
♣ 10 ♦ 70.0050.1930.1940.187
♦ 9 ♣ 60.0010.1660.1570.186
♣ king ♦ 30.1910.1960.1810.186
♣ 9 ♦ 70.00.1570.1710.186
♦ king ♣ 80.2170.20.1860.186
♦ king ♣ 50.2140.20.1980.184
♣ 8 ♦ 70.00.1750.1730.184
♦ queen ♣ 40.0540.1910.180.183
♦ 10 ♣ 60.0030.1470.1570.182
♣ queen ♦ 70.0620.1760.1860.182
♦ jack ♣ 70.0090.1850.1770.181
♦ king ♣ 40.2180.1950.1870.18
♦ 9 ♣ 70.0010.1790.160.18
♣ jack ♦ 80.010.1840.1720.179
♦ 10 ♣ 70.0040.1920.170.179
♣ ace ♦ 60.6960.230.2140.179
♦ 8 ♣ 70.00.1740.1570.179
♣ 10 ♦ 80.0050.1770.1630.178
♦ queen ♣ 50.0720.1850.1770.178
♣ 7 ♦ 40.00.1350.1480.177
♣ king ♦ 60.2090.1850.1690.176
♣ 5 ♦ 40.00.1320.1410.176
♣ king ♦ 80.2080.2130.20.176
♣ 7 ♦ 50.00.1530.1420.175
♣ queen ♦ 80.0530.2110.1770.171
♣ queen ♦ 40.0560.1750.1560.17
♦ king ♣ 30.2070.170.1670.169
♣ 10 ♦ 50.0040.1550.1450.169
♦ 4 ♣ 30.00.110.130.168
♣ 10 ♦ 60.0050.1720.1550.168
♣ jack ♦ 40.0140.1620.1580.167
♣ king ♦ 50.2260.1620.1640.167
♦ jack ♣ 40.0090.1470.1460.166
♣ 8 ♦ 50.00.1280.1490.165
♣ jack ♦ 30.0130.1630.1440.165
♦ queen ♣ 30.0510.1650.1590.165
♣ 4 ♦ 30.00.1160.140.165
♦ queen ♣ 70.0540.1810.1730.165
♣ queen ♦ 30.0610.1580.1560.164
♦ king ♣ 20.2320.1520.1560.164
♦ 10 ♣ 50.0030.1650.1550.164
♣ queen ♦ 50.0490.1920.1710.163
♦ 7 ♣ 50.00.1410.1530.162
♣ 10 ♦ 30.0020.1490.1480.162
♦ 9 ♣ 50.00.140.1360.162
♣ queen ♦ 20.0510.1690.1620.162
♣ 6 ♦ 40.00.120.1380.162
♣ 8 ♦ 60.00.1540.1560.162
♦ 6 ♣ 30.00.1230.130.161
♦ 5 ♣ 40.00.1180.1290.161
♦ 10 ♣ 20.0010.1250.1440.161
♣ jack ♦ 20.0130.1260.1320.16
♣ 8 ♦ 40.00.1360.1320.16
♣ jack ♦ 60.0170.160.1620.159
♣ jack ♦ 50.0120.1560.1540.159
♦ 8 ♣ 50.00.1370.1380.159
♦ 10 ♣ 40.0030.1450.150.158
♣ 9 ♦ 30.00.1320.1350.158
♦ 7 ♣ 60.00.1440.1520.157
♦ jack ♣ 60.0120.1580.1480.156
♦ 5 ♣ 20.00.1040.120.156
♦ queen ♣ 20.0560.1650.1450.156
♦ 6 ♣ 50.00.1230.1260.154
♣ 10 ♦ 40.0050.1380.1330.15
♦ 9 ♣ 40.0020.1490.1480.15
♣ 4 ♦ 20.00.1160.1210.149
♦ jack ♣ 50.0140.1520.1380.149
♦ jack ♣ 20.0150.1430.1420.149
♣ 6 ♦ 50.00.1290.130.149
♦ 7 ♣ 40.00.140.1250.149
♣ 5 ♦ 30.00.1260.1280.148
♦ 10 ♣ 30.0010.1340.1370.147
♣ 6 ♦ 30.00.110.1120.146
♣ 7 ♦ 30.00.1270.1260.146
♣ 5 ♦ 20.00.1090.1140.145
♦ 6 ♣ 20.00.1050.1190.145
♦ 9 ♣ 20.00.1420.1220.142
♣ 9 ♦ 20.00.120.1220.142
♣ 9 ♦ 50.00.1320.1150.141
♦ 8 ♣ 40.00.1290.1230.141
♦ 6 ♣ 40.00.1160.1290.14
♦ 4 ♣ 20.00.1130.1160.139
♦ 5 ♣ 30.00.1020.1140.138
♣ 7 ♦ 20.00.1220.1070.137
♣ 3 ♦ 20.00.1060.120.137
♣ 9 ♦ 60.00.1450.1410.136
♦ 7 ♣ 20.00.1330.1360.135
♦ 7 ♣ 30.00.1210.1220.133
♣ 10 ♦ 20.0020.1420.1330.132
♦ jack ♣ 30.0140.1450.1230.129
♣ 9 ♦ 40.00.1280.1160.127
♦ 8 ♣ 20.00.1140.1110.125
♣ 8 ♦ 30.00.1280.1110.125
♣ 8 ♦ 20.00.1140.1090.124
♦ 9 ♣ 30.00.1390.1170.122
♣ 6 ♦ 20.00.1050.1240.121
♦ 3 ♣ 20.00.0830.0860.12
♦ 8 ♣ 30.00.1230.1060.118
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 45, "text": [ "" ] } ], "prompt_number": 45 }, { "cell_type": "markdown", "metadata": {}, "source": [ "A last table is obtained by filtering by mean chance of winning, for all three columns:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "src = \"\"\"\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " {0}\n", "
HandChance of winning pre-flopChance of winning post-flopChance of winning post-turnChance of winning post-river
\"\"\".format(\"\".join([\"\"\"{0}\n", " {1[0]}\n", " {1[1]}\n", " {1[2]}\n", " {1[3]}\n", " \"\"\".format(code_to_str(item), data[item]) for item in sorted(data, \n", " key=lambda item: sum(data[item][:]), \n", " reverse=True)]))\n", "\n", "HTML(src)" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
HandChance of winning pre-flopChance of winning post-flopChance of winning post-turnChance of winning post-river
Pair of ace1.00.7350.5660.421
Pair of king0.9780.660.4890.369
Pair of queen0.9450.5910.4490.349
Pair of jack0.9140.490.3430.303
Pair of 100.870.4040.2970.271
Pair of 90.8670.4020.2980.268
Pair of 70.8290.3110.270.268
Pair of 80.8370.3060.2470.24
♦ ace ♣ king0.6990.2980.2840.266
♦ ace ♣ queen0.7110.2880.2730.264
♣ ace ♦ king0.6790.2950.2780.246
Pair of 60.790.2570.2220.227
♦ ace ♣ 100.7120.270.2540.257
♦ ace ♣ jack0.6710.2970.2820.237
♣ ace ♦ queen0.7030.2830.2510.241
Pair of 50.760.2220.230.245
♣ ace ♦ jack0.6970.260.2590.233
♦ ace ♣ 90.7280.2360.2230.219
♣ ace ♦ 90.7030.2510.2290.209
Pair of 30.7160.2030.2260.247
♦ ace ♣ 50.710.2330.2240.216
♣ ace ♦ 30.7120.2220.2180.215
Pair of 40.7220.2020.2070.228
♣ ace ♦ 80.670.250.2280.209
♣ ace ♦ 50.720.2270.20.208
♦ ace ♣ 80.6950.240.2150.199
♣ ace ♦ 70.7130.2240.2110.199
♣ ace ♦ 100.6590.2420.2240.213
♦ ace ♣ 70.6970.2260.1970.21
♣ ace ♦ 40.6710.2290.2170.204
♣ ace ♦ 60.6960.230.2140.179
♣ ace ♦ 20.7090.2130.1990.193
♦ ace ♣ 30.6730.2180.2070.213
♦ ace ♣ 40.6890.2180.1950.205
♦ ace ♣ 60.6780.2320.1930.19
Pair of 20.6870.1840.1940.219
♦ ace ♣ 20.6860.1870.180.193
♦ king ♣ jack0.250.2860.2880.263
♣ king ♦ queen0.2210.2790.2690.272
♣ king ♦ jack0.2080.2770.2570.237
♦ king ♣ queen0.2050.2450.2540.256
♦ king ♣ 100.2380.2530.2290.226
♣ king ♦ 100.2170.2450.2420.236
♦ king ♣ 90.2410.2270.2240.23
♦ king ♣ 60.2180.2120.2130.211
♣ king ♦ 70.240.2150.1980.19
♦ king ♣ 70.2170.2080.2030.203
♣ king ♦ 90.2160.2180.2020.19
♣ king ♦ 40.1950.2140.2010.207
♣ king ♦ 20.2380.1870.1870.2
♣ king ♦ 80.2080.2130.20.176
♦ king ♣ 50.2140.20.1980.184
♦ king ♣ 80.2170.20.1860.186
♦ king ♣ 40.2180.1950.1870.18
♣ queen ♦ jack0.0590.2340.2430.242
♣ queen ♦ 100.0650.2210.2450.247
♦ queen ♣ 100.0530.2310.2340.238
♣ king ♦ 30.1910.1960.1810.186
♦ queen ♣ jack0.0560.2240.2320.239
♣ king ♦ 60.2090.1850.1690.176
♣ king ♦ 50.2260.1620.1640.167
♦ king ♣ 30.2070.170.1670.169
♦ king ♣ 20.2320.1520.1560.164
♣ queen ♦ 90.0560.220.1990.206
♦ queen ♣ 90.0590.2130.2030.188
♦ 10 ♣ 90.0040.2260.2050.22
♣ jack ♦ 100.0130.2070.2050.224
♦ queen ♣ 60.0720.1960.1820.198
♦ jack ♣ 90.0140.2170.1910.215
♦ jack ♣ 100.0130.2040.20.219
♦ queen ♣ 80.050.1980.1920.187
♦ 10 ♣ 80.0030.2070.1970.21
♣ jack ♦ 90.0120.2090.1910.203
♣ queen ♦ 80.0530.2110.1770.171
♦ queen ♣ 50.0720.1850.1770.178
♦ queen ♣ 40.0540.1910.180.183
♣ queen ♦ 70.0620.1760.1860.182
♦ jack ♣ 80.0120.20.1850.204
♣ queen ♦ 60.0470.1910.1650.189
♣ 10 ♦ 90.00.2040.1890.198
♣ 10 ♦ 70.0050.1930.1940.187
♣ queen ♦ 50.0490.1920.1710.163
♦ queen ♣ 70.0540.1810.1730.165
♣ 9 ♦ 80.0010.1840.1840.194
♣ queen ♦ 40.0560.1750.1560.17
♣ jack ♦ 70.0090.1920.1680.187
♦ jack ♣ 70.0090.1850.1770.181
♣ jack ♦ 80.010.1840.1720.179
♦ 10 ♣ 70.0040.1920.170.179
♣ queen ♦ 20.0510.1690.1620.162
♦ queen ♣ 30.0510.1650.1590.165
♣ queen ♦ 30.0610.1580.1560.164
♣ 8 ♦ 70.00.1750.1730.184
♦ 8 ♣ 60.00.1710.1660.189
♣ 10 ♦ 80.0050.1770.1630.178
♦ queen ♣ 20.0560.1650.1450.156
♦ 9 ♣ 70.0010.1790.160.18
♣ 9 ♦ 70.00.1570.1710.186
♦ 9 ♣ 80.0010.1570.1590.194
♦ 9 ♣ 60.0010.1660.1570.186
♦ 8 ♣ 70.00.1740.1570.179
♣ jack ♦ 40.0140.1620.1580.167
♣ 10 ♦ 60.0050.1720.1550.168
♣ jack ♦ 60.0170.160.1620.159
♣ 7 ♦ 60.00.1470.1530.191
♦ 10 ♣ 60.0030.1470.1570.182
♦ 10 ♣ 50.0030.1650.1550.164
♣ jack ♦ 30.0130.1630.1440.165
♣ jack ♦ 50.0120.1560.1540.159
♦ jack ♣ 60.0120.1580.1480.156
♣ 10 ♦ 50.0040.1550.1450.169
♣ 8 ♦ 60.00.1540.1560.162
♣ 7 ♦ 50.00.1530.1420.175
♦ jack ♣ 40.0090.1470.1460.166
♣ 10 ♦ 30.0020.1490.1480.162
♣ 7 ♦ 40.00.1350.1480.177
♦ 10 ♣ 40.0030.1450.150.158
♦ 7 ♣ 50.00.1410.1530.162
♦ jack ♣ 50.0140.1520.1380.149
♦ 7 ♣ 60.00.1440.1520.157
♣ 5 ♦ 40.00.1320.1410.176
♦ jack ♣ 20.0150.1430.1420.149
♦ 9 ♣ 40.0020.1490.1480.15
♣ 8 ♦ 50.00.1280.1490.165
♦ 9 ♣ 50.00.140.1360.162
♦ 8 ♣ 50.00.1370.1380.159
♣ jack ♦ 20.0130.1260.1320.16
♦ 10 ♣ 20.0010.1250.1440.161
♣ 8 ♦ 40.00.1360.1320.16
♣ 10 ♦ 40.0050.1380.1330.15
♣ 9 ♦ 30.00.1320.1350.158
♣ 9 ♦ 60.00.1450.1410.136
♣ 4 ♦ 30.00.1160.140.165
♣ 6 ♦ 40.00.120.1380.162
♦ 10 ♣ 30.0010.1340.1370.147
♦ 6 ♣ 30.00.1230.130.161
♦ 7 ♣ 40.00.140.1250.149
♦ jack ♣ 30.0140.1450.1230.129
♣ 10 ♦ 20.0020.1420.1330.132
♦ 4 ♣ 30.00.110.130.168
♦ 5 ♣ 40.00.1180.1290.161
♣ 6 ♦ 50.00.1290.130.149
♦ 9 ♣ 20.00.1420.1220.142
♦ 7 ♣ 20.00.1330.1360.135
♦ 6 ♣ 50.00.1230.1260.154
♣ 5 ♦ 30.00.1260.1280.148
♣ 7 ♦ 30.00.1270.1260.146
♦ 8 ♣ 40.00.1290.1230.141
♣ 9 ♦ 50.00.1320.1150.141
♣ 4 ♦ 20.00.1160.1210.149
♦ 6 ♣ 40.00.1160.1290.14
♣ 9 ♦ 20.00.120.1220.142
♦ 5 ♣ 20.00.1040.120.156
♦ 9 ♣ 30.00.1390.1170.122
♦ 7 ♣ 30.00.1210.1220.133
♣ 9 ♦ 40.00.1280.1160.127
♦ 6 ♣ 20.00.1050.1190.145
♣ 6 ♦ 30.00.110.1120.146
♣ 5 ♦ 20.00.1090.1140.145
♦ 4 ♣ 20.00.1130.1160.139
♣ 7 ♦ 20.00.1220.1070.137
♣ 8 ♦ 30.00.1280.1110.125
♣ 3 ♦ 20.00.1060.120.137
♦ 5 ♣ 30.00.1020.1140.138
♦ 8 ♣ 20.00.1140.1110.125
♣ 6 ♦ 20.00.1050.1240.121
♣ 8 ♦ 20.00.1140.1090.124
♦ 8 ♣ 30.00.1230.1060.118
♦ 3 ♣ 20.00.0830.0860.12
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 46, "text": [ "" ] } ], "prompt_number": 46 }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Conclusions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I hope this post has given you a little bit of new knowledge about poker. What I have learned while writing it is that poker is extremely dynamic: a given hand can be good at various stages and does not have an absolute strenght. If you take into account the human factor, this gives a good idea of why the game can be so difficult and at the same time, exhilarating" ] } ], "metadata": {} } ] }