Originally Posted by

**Cacarulo**
This is what I get now for **ENHC**:

Code:

Standing = -56.65807149255014% | -56.65807149255014%
Hitting = -22.12141526286563% | -22.12141526286563%
Doubling = -58.83294803078072% | -58.83294803078072%
Surrender = -50.00000000000000% | ** -53.06122448979592%
**

Note that the conditional values can be used for **ES** and the unconditional values for **LS**.

Do we agree now?

Sincerely,

Cac

Conditional late surrender EV is always -.5. Conditional or unconditional early surrender EV is always -.5.

Conditional EVs can be used to determine strategy (if not no peek) but at some point the fact that dealer may have BJ must be taken into consideration so in that sense they are not permanent. Unconditional EVs can be used to compute strategy as well and are the actual value of the hand. Below computes unconditional EV given conditional EV is known, which is the way traditionally done.

let cev = conditional EV assuming dealer does not have BJ

let ucev = unconditional EV where player non-BJ loses to dealer BJ

let PDBJ = probability of dealer BJ

Code:

peek no peek
stand ucev = cev - pDBJ*(1 + cev) ucev = cev - pDBJ*(1 + cev)
hit ucev = cev - pDBJ*(1 + cev) ucev = cev - pDBJ*(1 + cev)
double ucev = cev - pDBJ*(1 + cev) ucev = cev - pDBJ*(2 + cev)
split ucev = cev - pDBJ*(1 + cev) ucev = cev - pDBJ*(num expected hands + cev)
late surrender ucev = cev - pDBJ*(1 + cev) ucev = cev - pDBJ*(1 + cev)
early surrender ucev = -.5 ucev = -.5
LS cev = -.5 for both peek & no peek
ES cev = ucev = -.5 for both peek & no peek

In order to compute num expected hands for splits recursive function could be used.

Code:

pCards = number of pair cards which is always initially 2
remSp = number of remaining splits = number of allowed splits - 1
p = number of pair cards present after initial pair and up card have been dealt
np = number of non-pair cards present after initial pair and up card have been dealt
double getSplitHands(const int &pCards, const int &remSp, const int &p, const int &np)
{
if (p == 0 || remSp == 0)
return double(pCards);
double hands;
double pP = double(p) / (p + np);
if (pCards >= 2) {
hands = pP * getSplitHands(pCards + 1, remSp - 1, p - 1, np);
hands += (1 - pP) * (getSplitHands(pCards - 1, remSp, p, np - 1) + 1);
}
else { // if (pCards == 1)
hands = pP * getSplitHands(2, remSp - 1, p - 1, np);
hands += (1 - pP);
}
return hands;
}
Example 8-8 versus T single deck:
p=2, np=47
allowed splits = 1, remSp=0; hands = getSplitHands(2,0,2,47) = 2
allowed splits = 2, remSp=1; hands = getSplitHands(2,1,2,47) = 2.0807823129
allowed splits = 3, remSp=2; hands = getSplitHands(2,2,2,47) = 2.0850340136

What I do is to initially compute unconditional EVs. All strategies can be determined from this. It is unnecessary to use conditional EVs but I can compute then from the unconditional EVs and that's what I do to relate.

k_c

## Bookmarks