There are a few ways to view the simulation of Ranges. I wanted to find AA vs KK+. The way I did it was create a vector of all Aces and Kings. Deal UTG a card then deal MP then UTG then MP. I checked if UTG had AA and MP had AA or KK, If not I dealt again.
My results:
Code:
# ./main
Player 1 has AA: 1e+07
Player 1 has KK: 0
Player 2 has AA: 1.42668e+06
Player 2 has KK: 8.57332e+06
Player 1 gets AA: 100%
Player 1 gets KK: 0%
Player 2 gets AA: 14.2668%
Player 2 gets KK: 85.7332%
Win1: 7.03758e+06
Win2: 1.55828e+06
Tie: 1.40414e+06
UTG: 70.3758%
MP: 15.5828%
TIE: 14.0414%
#
The other way I thought to do this was the same thing as before yet alternate who gets a card first. This will give very slightly different results since MP will have a slightly greater chance to get an A. But this seems unrealistic since in the real world UTG is always dealt first. I guess it depends how you view it. Poker Stove names the players: player 1, player 2, player 3...
Not by position. I wonder is they alternate who gets a card first?
And i wonder if I should? I am not sure. Equilab on the other hand names player by position. I also wonder if they alternate who gets a card first.
Either way, I did not alternate who gets a card first. I figured in real life UTG is dealt first and then MP. My results above look ok, but its only 10 million hands.
I am going to start working on flop analysis now. I think my poker hand functions are pretty precise. I am also learning how to evaluate user strings for nice program flow. I got the makefile thing down now too.