org.pokersource.enumerate
Class Enumerate

java.lang.Object
  extended by org.pokersource.enumerate.Enumerate

public class Enumerate
extends java.lang.Object

Algorithms for enumerating or sampling the outcomes of a poker hand matchup.

Author:
Michael Maurer <mjmaurer@yahoo.com>

Constructor Summary
private Enumerate()
           
 
Method Summary
static void main(java.lang.String[] args)
          A simple test of Enumerate methods.
static void PotEquity(int gameType, int nsamples, long[] pockets, long board, long dead, double[] ev)
          Compute all-in pot subjectiveAllinEquity of each player's hand, either by complete enumeration of outcomes or by monte carlo sampling.
static void PotEquityOrdering(int gameType, int nsamples, long[] pockets, long board, long dead, double[] ev, int[][][] orderKeys, int[][] orderVals)
          Compute all-in pot subjectiveAllinEquity of each player's hand, either by complete enumeration of outcomes or by monte carlo sampling.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Enumerate

private Enumerate()
Method Detail

PotEquity

public static void PotEquity(int gameType,
                             int nsamples,
                             long[] pockets,
                             long board,
                             long dead,
                             double[] ev)
Compute all-in pot subjectiveAllinEquity of each player's hand, either by complete enumeration of outcomes or by monte carlo sampling.

Parameters:
gameType - specifies game (Enumerate.GAME_HOLDEM, etc)
nsamples - number of monte carlo samples; if 0, full enumeration
pockets - pockets[i] is bitmask of player i's cards
board - board is bitmask of board cards
dead - dead is bitmask of dead cards
ev - output: ev[i] is pot subjectiveAllinEquity of player i

PotEquityOrdering

public static void PotEquityOrdering(int gameType,
                                     int nsamples,
                                     long[] pockets,
                                     long board,
                                     long dead,
                                     double[] ev,
                                     int[][][] orderKeys,
                                     int[][] orderVals)
Compute all-in pot subjectiveAllinEquity of each player's hand, either by complete enumeration of outcomes or by monte carlo sampling.

Parameters:
gameType - specifies game (Enumerate.GAME_HOLDEM, etc)
nsamples - number of monte carlo samples; if 0, full enumeration
pockets - pockets[i] is bitmask of player i's cards
board - board is bitmask of board cards
dead - dead is bitmask of dead cards
ev - output: ev[i] is pot subjectiveAllinEquity of player i
orderKeys - output: orderKeys[0][j] corresponds to a particular relative ordering of the players' hands at showdown, such that orderKeys[0][j][k] is the relative rank of player k's hand, where rank=0 means best, rank=nplayers-1 means worst, and rank=nplayers indicates a non-qualifying hand. For high-low games, orderKeys[0][j][k+nplayers] gives corresponding information for the low hand. Before calling the method, allocate orderKeys as a new int[1][][].
orderVals - output: orderVals[0][j] the number of outcomes corresponding to the relative rank ordering in orderKeys[0][j]. Before calling the method, allocate orderVals as a new int[1][].

main

public static void main(java.lang.String[] args)
A simple test of Enumerate methods. Compare to "pokenum -h ks kh ad td 9c 8c -- kd jd th / As 2h". and "pokenum -O -h ks kh ad td 9c 8c -- kd jd th / As 2h".