aspose file tools*
The moose likes Game Development and the fly likes Texas Holdem Poker - Hand Strength Calculation Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Game Development
Bookmark "Texas Holdem Poker - Hand Strength Calculation" Watch "Texas Holdem Poker - Hand Strength Calculation" New topic
Author

Texas Holdem Poker - Hand Strength Calculation

Kapish M Joshi
Greenhorn

Joined: Sep 12, 2012
Posts: 10

Can somebody suggest me a good algorithm to calculate
Hand Strength
for
Texas Holdem, Omaha
Poker games. Apart from this i am also
working on Pot creation and Rake calculation
part. It would be helpful if anyone could contribute some logic or algorithms.


Kapish M Joshi| kjoshi@infocepts.com | InfoCepts
Winston Gutkowski
Bartender

Joined: Mar 17, 2011
Posts: 8223
    
  23

Kapish M Joshi wrote:Can somebody suggest me a good algorithm to calculate Hand Strength

No, because it isn't really an algorithm: it's an ordered list; and 10 seconds on Google got me this. If I was doing this, I'd probably consider using an Enum to define it though.

Apart from this i am also working on Pot creation and Rake calculation part. It would be helpful if anyone could contribute some logic or algorithms.

Again, the "Pot" isn't really an algorithm; it's a structure - basically a List with methods for providing totals - and I reckon it's probably closely related to the Players at the table.

As for Rake calculation, you'll have to explain the term before I can help. Not a gambler.

Winston


Isn't it funny how there's always time and money enough to do it WRONG?
Articles by Winston can be found here
Kapish M Joshi
Greenhorn

Joined: Sep 12, 2012
Posts: 10

Hi Winston,

Appreciate your help. Thanks. Yeah, http://www.pokerlistings.com/poker-hand-ranking this is actually the pattern that should be considered while calculating strength of cards.
For E.g. Consider simplest logic, If I am playing Poker Hand and
I got 5 cards as - 2♥ 7♦ 4 ♣ A♠ A♥,
Next person got 5 cards as - 5♥ 2♦ Q ♣ K♠ J♥,

here every card has a weight say 2♥- 23, 7♦ - 67, 4 ♣ - 98, A♠ - 122, A♥ - 109 then we have to create total and then compare both hands. The one with more weight wins the hand.
This is not really as simple as even i thought because there are millions of combinations possible with a hand (5 cards taken from a deck).

I am trying to implement this using pattern recognition, but that too is very lengthy.

Pot - yeah Pot is winning total at the end of poker hand, its not algorithm but we need to write some logic to calculate pot because:
1. Poker game can have number of Hands
2. Each Hand will add to the value of pot
3. Bets of each player will contribute to pot
4. Pot distribution depends upon the percentage of amount contributed by particular player to total pot amount
5. There can be one or more than one pot winners

I am done with the logic creation part for this.

Rake - Its the amount deducted from player whenever he bets some amount on table. It is the pivot of gambling where revenue generation happens. Can't disclose about it in details.

fred rosenberger
lowercase baba
Bartender

Joined: Oct 02, 2003
Posts: 11479
    
  16

Winston Gutkowski wrote:
Kapish M Joshi wrote:Can somebody suggest me a good algorithm to calculate Hand Strength

No, because it isn't really an algorithm: it's an ordered list

I don't that's what he's going for...

In standard Texas Hold 'Em, everyone is dealt two cards face down. there is a round of betting. You have to decide if to bet, and how much to bet, based on the two card. So being dealt a suited A-K is clearly going to be better than a non-suited 10-9. And an unsuited 2-7 is the worst possible starting hand.

But even at that...your position at the table also has an impact. If you are in an early position, you need a stronger hand if you are going to bet, whereas if you are on the button, you can bet with weaker hand - depending on what everyone else does.


There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors
fred rosenberger
lowercase baba
Bartender

Joined: Oct 02, 2003
Posts: 11479
    
  16

and 'Rake' isn't very complicated. It refers to how much money the house takes from each pot. It is generally only applied to casinos or on-line cash games. If you are playing at home with friends, there usually isn't one.

It can be done in any of several ways:

A fee to join the tournament
A percentage of each pot
A fee charged to the 'dealer' on each hand
Some online services charge a monthly fee (i.e. a subscription), but then play is 'free' beyond that
etc..
Winston Gutkowski
Bartender

Joined: Mar 17, 2011
Posts: 8223
    
  23

Kapish M Joshi wrote:here every card has a weight say 2♥- 23, 7♦ - 67, 4 ♣ - 98, A♠ - 122, A♥ - 109 then we have to create total and then compare both hands. The one with more weight wins the hand.

Doesn't sound right to me.

First: the problem is complicated by the fact that you're choosing the "best 5 of 7" (actually: Player's 2, plus the best 3-of-5 from the flop, turn and river).

Second: Any "weighting" will only apply to:
(a) The value of card involved in making up two similar winning hands.
(b) The remaining cards of two identical winning hands.

I am trying to implement this using pattern recognition, but that too is very lengthy.
And possibly over-engineering. You only have 9 possible hands (10 if you count 'High Card', but personally I'd say that that's the absence of any other kind of hand) that fall into 3 categories:
1. Flushes - 5 cards of the same suit.
2. Straights - 5 cards in value sequence.
3. Multiples - 2, 3, or 4 cards of the same value (including full houses).
so I'd make those your first checks.

I'd also do them in the order above because in 'vanilla' form, that's the order they're ranked. And unless you're playing from a multi-deck shoe (unusual, from what a gather), it also eliminates the most possibilities:

  • If you find a flush in the 7 possible cards, it must be the best hand available to the player. So, the only other thing you need to check is:
    Are those same 5 cards (or a particular set, if there's more than one combination to choose from) ALSO a straight?
  • If you don't find a flush, but DO find a straight, again, it must be the best hand available to the player.
  • If you don't find a flush, or a straight, the only other possible hand is a multiple (or twin-multiple) of some kind. I'll leave you to sort out that logic, but it's still relatively straightforward.

  • With a multi-deck shoe, it's a bit trickier, but still relatively straightforward. The main difference is that if you find a flush; the 7 cards could ALSO contain 4 of a kind or a full house.

    HIH

    Winston
    Winston Gutkowski
    Bartender

    Joined: Mar 17, 2011
    Posts: 8223
        
      23

    fred rosenberger wrote:I don't that's what he's going for...

    Oh, OK. I was thinking of weighting in terms of final evaluation. Seems to me that weighting (especially by card) probably isn't the way to go for evaluating a hand (or, more accurately, a 'situation'), since there are so many other variables - including the "weight" that you might put on any previous bet placed, particularly if the game involves 'blinds'.

    Winston
    Kapish M Joshi
    Greenhorn

    Joined: Sep 12, 2012
    Posts: 10

    Thanks Winston. Actually the game being developed will go live for real money poker gaming; at early stage we are expecting around 1000 players playing online at the same time while approximately 200 just logged in and watching game. The knowledge you shared was really helpful.
    Winston Gutkowski
    Bartender

    Joined: Mar 17, 2011
    Posts: 8223
        
      23

    Kapish M Joshi wrote:Thanks Winston...The knowledge you shared was really helpful.

    No probs. Too much late night TV. I've never actually played the game.

    Winston
    Justin Johnson
    Greenhorn

    Joined: Sep 12, 2011
    Posts: 10
    Winston is correct in that there is no real need to calculate hand strength until the very end of the hand where you are forced to determine the winner (showdown). For human players playing against other human players this will be sufficient as long as your program knows how to read the player's hands and evaluate them based on the list of hand rankings, flush beats straight for example.

    If you're developing a poker playing artificial intelligence or if you're just curious you may want to look into starting hand strength from a strategic standpoint. As was pointed out, in texas holdem an ace and a king is a better starting hand than a two and a seven. One way to determine this is by running both hands through an equity simulator, which is a program that runs hundreds of thousands of different possible boards out that allows you to get a pretty accurate estimate as to which hand wins more often. Then you can run each hand against each other possible hand, determine an average equity and then rank the hands accordingly. There are two great free programs out there that do this already:

    PokerStove
    ProPokerTools

    Its still however, ultimately a matter of strategy that determines what the best hands are and not programming since there are different betting streets and different player psychologies.
    TwoPlusTwo is a great strategy site that also has a programming forum.
    Aron knight
    Greenhorn

    Joined: Aug 18, 2012
    Posts: 9
    I created somthing similar a while ago, it wasnt very nice coding.. but it was something fun to do.

    ANyway have you looked at bill chen formula, that is very easy to convert into an algorithm. Il also try and find the site i used, it was a points scale basically, which would tell me whether i should raise or fold..etc..etc.. not sire if that what your lookign for.
    faisal hameed
    Ranch Hand

    Joined: Jan 19, 2009
    Posts: 48
    Here is complete code to compute strength of hand whick I learn from an online course.


    Regards, M Faisal Hameed
    PUCIT, Pakistan
     
    I agree. Here's the link: http://aspose.com/file-tools
     
    subject: Texas Holdem Poker - Hand Strength Calculation