def testDealHand(self): """Test basic dealing to a single hand.""" hand = Hand() deck = Deck() deck.shuffle() deck.deal(hand,5) self.assertEquals(len(hand), 5)
def testCreateHands(self): """Test creating multiple hands.""" deck = Deck() deck.shuffle() hands = deck.createHands(8, handClass=HoldEm.Hand) self.assertEquals(len(hands), 8) for hand in hands: self.assertEquals(len(hand), 2)
def testDealHands(self): """Test dealing to multiple hands.""" hands = [Hand(), Hand(), Hand(), Hand()] deck = Deck() deck.shuffle() deck.deal(hands, 5) for hand in hands: self.assertEquals(len(hand), 5)
def evaluateHand(hand, numDeals, numHands): handRank = HoldEmStartingHandRanker.rankHand(hand) betterThan = [ 0 ] * numHands for deal in range(numDeals): deck = Deck() deck.removeCards(hand) deck.shuffle() hands = [] for h in range(numHands): hands.append(HoldEm.Hand()) deck.dealHands(hands) for h in range(numHands): rank = HoldEmStartingHandRanker.rankHand(hands[h]) if handRank > rank: betterThan[h] += 1 else: break return betterThan
def main(argv=None): if argv is None: argv = sys.argv usage = "usage: %prog [<options>] Card1 Card2 Card3 Card4" version = "%prog version 1.0" parser = OptionParser(usage=usage, version=version) parser.add_option("-n", "--numDeals", type="int", dest="numDeals", default=1000, help="number of deals to simulate (Default is 100)") parser.add_option("-N", "--numHands", type="int", dest="numHands", default=8, help="number of Hands (Default is 8)") parser.add_option("-p", "--showProgress", action="store_true", dest="showProgress", default=False, help="show progress") (options, args) = parser.parse_args() total = 0 pointOpeningHands = 0 pointRaisingHands = 0 pointReraisingHands = 0 maxPointOpeners = 0 openingHands = 0 for deal in xrange(options.numDeals): deck = Deck() deck.shuffle() hands = deck.createHands(options.numHands, handClass = Omaha.Hand) dealOpeners = 0 for h in hands: value = h.pointValue() total += value if value > 25: dealOpeners += 1 pointOpeningHands += 1 if value > 40: pointRaisingHands += 1 if value > 50: pointReraisingHands += 1 if h.openingHand(): openingHands += 1 if dealOpeners > maxPointOpeners: maxPointOpeners = dealOpeners # Update progress if so requested if options.showProgress and (deal % 20 == 0): sys.stdout.write(".") sys.stdout.flush() if options.showProgress: print totalHands = options.numDeals * options.numHands avg = total/totalHands print "Average point value: %d" % avg print "\tOpeners: %5.2f%% Raisers: %5.2f%% Reraisers: %5.2f%%" % ( percent(pointOpeningHands, totalHands), percent(pointRaisingHands, totalHands), percent(pointReraisingHands, totalHands)) print "\tOpeners in a deal: Average %4.1f Max %d" % ( 1.0 * pointOpeningHands / options.numDeals, maxPointOpeners) print "Opening Hands by Krieger method: %5.2f%%" % percent(openingHands, totalHands)
def testDesk(self): """Test basic deck construction and shuffling.""" deck = Deck() self.assertEqual(len(deck), 52, "Deck has %d cards!" % len(deck)) deck.shuffle() deck.reset()
def main(argv=None): if argv is None: argv = sys.argv usage = "usage: %prog [<options>]" version = "%prog version 1.0" parser = OptionParser(usage=usage, version=version) parser.add_option("-n", "--numDeals", type="int", dest="numDeals", default=1000, help="number of deals to simulate (Default is 100)") parser.add_option("-p", "--showProgress", action="store_true", dest="showProgress", default=False, help="show progress") (options, args) = parser.parse_args() print "Testing for %d deals" % options.numDeals lowDraw = 0 lowDrawCompleted = 0 floppedLow = 0 lowPossible = 0 backdoorLow = 0 for deal in range(options.numDeals): deck = Deck() deck.shuffle() board = Board() # Deal out flop and count low cards deck.deal(board, 3) flopLowCount = board.countEightOrLower() if flopLowCount == 2: lowDraw += 1 # Finish dealing turn and river deck.deal(board, 2) # Analyze lowCount = board.countEightOrLower() if lowCount > 2: lowPossible += 1 if flopLowCount == 3: # Flopped a low floppedLow += 1 elif flopLowCount == 2: # Completed a draw lowDrawCompleted += 1 else: # Backdoor low backdoorLow += 1 # Update progress if so requested if options.showProgress and (deal % 20 == 0): sys.stdout.write(".") sys.stdout.flush() if options.showProgress: print statStr = lambda name, value: "%-30s %5d (%5.2f%%)" % (name.capitalize() + ":", value, 100.0 * value / options.numDeals) print statStr("eight-low possible", lowPossible) print statStr("flopped low", floppedLow) print statStr("flopped low draw", lowDraw) print statStr("completed draw", lowDrawCompleted) print statStr("backdoor low", backdoorLow)