Simulation involves playing the hand out several times, where opponent hands and upcoming community cards are dealt randomly each time. The number of simulations can be fixed, variable, or dependent on some real-time constraint. If the sampling method is good, this will give a rough estimate of the strength and potential of your hand.

In contrast, enumeration involves evaluating each possible situation to get exact probabilities of your winning chances. This is not feasible for playing the hand out (given the branching factor and wide variety of possible opponent hands, see Figure 4.2) but is easily calculated for measures such as immediate hand strength: on the flop there are only possible cases for opponent cards. Also note that given enough storage space some of the more complex enumerations could be pre-calculated.

These approaches can easily be mixed with an expert system
(* e.g.* bet if you have a 50% chance of winning), or with game
theory (* e.g.* bluff, or call a possible bluff, some game-theoretic optimal
function of the time). In particular, opponent modeling can easily
be combined with simulation or enumeration
to generate reasonably accurate probabilities of outcomes. A
useful opponent model would contain information specifying the
probability of an opponent holding each possible pair of cards.
In any particular simulation, this probability array could be used
to appropriately skew the selection of cards held by an opponent.
In an enumeration context, these probabilities would be used as weights
for each subcase considered.
Additionally, a faster but coarser estimate could be generated
by only enumerating over the most likely subcases.

Finally, there is another advantage to being able to combine
simulation or enumeration with opponent modeling. If the model
contains information such as the calling frequency of a given
opponent in a given situation, you would be able to take advantage
of a more realistic consideration of some outcomes. For example,
consider the situation where you are at the river against one opponent,
the pot contains $20, and your options are to check or bet
$4. Given
the probability array of your opponent's model you calculate by
enumeration that you have only a 10% chance of having the stronger hand.
The model tells you that, when faced by a check in this situation,
your opponent will check 100% of the time, and faced by a bet your opponent
will fold 30% and call 70%.
You can therefore calculate the expected value (*EV*) of your two options:

**check:**win $20 10% of the time, lose $0 90% of the time.*EV*= 20*0.10 - 0*0.90 = 2.00.**bet:**since your opponent will likely fold the weakest 30% of hands, and you could only beat 10% of all hands (or the worst third of the hands they fold) then there is no chance that you win if they call.**opponent folds 30%:**win $20 100% of the time.**opponent calls 70%:**win $24 0% of the time, lose $4 100% of the time.

*EV*= 0.30*(20*1.00) + 0.70*(24*0.00 -4*1.00) = 3.20. Therefore, it is more profitable if you bet (due to the reasonable possibility of scaring your opponent into folding).

This is a simple contrived example but it demonstrates how well an accurate opponent model complements a simulation or enumeration system.