# Versus random hands

I have written a program to rate 2 hole cards (your hand) against a single random hand. It works - I compared its results to a published list.

Your two hole cards are combined with a common 5 card board to create the best 5 card hand. You can play the board. Each opponent does the same.

I remove the two cards from the 52 card deck and run all the 5 card boards `combin(50,5) = 2,118,760`. For each board, I run all the remaining 2 card hands `combin(45,2) = 990` and just sum the wins and losses.

Against more than 1 random hand it get complicated though. If you are 50% against 1 random hand you cannot just divide by 2 and say you are 25% against 2 random hands.

My question relates to matchups versus 2 random hands. Would I need to run `combin(990,2) = 489,555`? It seems like there has to be a trick to get results versus multiple random hands from knowing the value for one random hand. I see poker calculators that do this very fast.

If we are 50% versus one random hand then against two random hands is 34% and three random hands is 21% with the calculators.

I expect most calculators online just run a subset of all possible boards as a representative sample - for example on ProPokerTools if you run a heads up hand against a random hand you get an exhaustive result (across 2,781,381,002,400 trials if running a random hand against a random hand - obviously less if a hand/range is specified for Hero), but if you run any hand/range against 2 or more random hands, you get a 600,000 trial sample. This obviously means you lose some accuracy - running a random (or 50% HU) hand against multiple random hands doesn't always give exactly 33.33%, 25.00% and 20.00% against 2, 3 and 4 Villains as it should for example, as you've already found based on the last sentence in your question.

Have you tried running the same matchup multiple times on the online calculators you're using to confirm that the results are deterministic? If they are, then perhaps there's no "trick" being used, but they are just running an exhaustive calculation and just have enough processing power to achieve this - have you tried scaling your existing approach to multiple random Villains and found that the processing time is prohibitive?

Having said all of that, I think there might be a way to derive the equities for Hero and any number of Villains with random holdings without doing an exhaustive calculation, as the relationship appears to be linear (giving some leeway for the fact that my equities were generated from 600k samples on ProPokerTools):

However, we'd need to identify more than the exact nature of the linear relationship between Hero and Villain equities to solve this for the general case - the distribution of points along the linear relationship for each Hero hand is also key - it looks like this reduces in inverse proportion to the number of Villains, but we'd need to do a bit more work to establish whether the equity for a given hand against any number of random hands can be derived just by knowing the equity of that hand against a single random hand. This may be beyond my mathematical capabilities, so perhaps someone else could get this over the line and hopefully this was still a helpful answer.

• Exhaustive against one opponent is 20 minutes. Two opponents is 500x as many boards. Dec 28, 2016 at 13:23
• What is your technology stack? 20 minutes for exhaustive when HU seems way too long (this should be just over 2 billions trials right? So you're getting less than 2 million trials per second?) - ProPokerTools appears to do this exhaustively in less than a second... Dec 28, 2016 at 13:29
• 20 seconds is too long. Heads up exhaustive is 2,097,572,400 combinations. No machine can do that in less than 1 second. If you search me on CodeReview you can see early pieces of the tool Dec 28, 2016 at 13:39
• Maybe ProPokerTools is doing some kind of lookup then - it certainly reports on screen that results are exhaustive (12,585,434,400 trials for AA vs [Random] for example) and even gives exact numbers of wins and ties for each hand, so not sure how it can do this without having exhaustively evaluated each run, or performed a lookup on some previously calculated data. I think this is a great question btw, looking forward to seeing some other answers. Dec 28, 2016 at 14:18
• 12585434400 does not really make sense to me. It is 6x my sample. For a pair there are 6 ways to make it but no reason to run all 6 as each combo should have the outcome against a random hand. Dec 28, 2016 at 20:35