Spring naar bijdragen
Logo betnation
Betnation

Tot €250,- bonus!


Logo betnation
Hard Rock

Tot €250,- bonus!


Logo betnation
ComeOn!

Tot 200 gratis spins!


Welkom bij Onetime

Wat is je leeftijd?


Om gebruik te maken van Onetime.nl is het noodzakelijk om aan te geven wat jouw leeftijd is.
Door je leeftijd aan te geven stem je in met ons cookiebeleid.


De leeftijd dient naar waarheid te worden ingevuld. Verder bevestig je hiermee dat je 24 jaar of ouder bent, dat je je bewust bent van de risico's van online kansspelen en dat je momenteel niet bent uitgesloten van deelname aan kansspelen.

Berekeningen voor het huisvoordeel van blackjack in HC


Aanbevolen berichten

Geplaatst

In dit topic zal ik uitkomsten van berekeningen plaatsen ten behoeve van het berekenen van de basisstrategie en het huisvoordeel van blackjack zoals dat in Holland Casino gespeeld wordt. De programma's die ik schrijf om de berekeningen uit te voeren zal ik ook in dit topic plaatsen, zodat iedereen alles kan controleren of eventueel zelf ook de berekeningen kan uitvoeren. Alle code zal ik schrijven in C++. Hiervoor maak ik gebruik van het programma Code::Blocks. Wil je hier zelf mee aan de gang, dan kan ik de C++ programming videotutorials van Bucky zeer aanbevelen. In de eerste tutorial helpt hij je om Code::Blocks te installeren en in de volgende tutorials leert hij je stapsgewijs programmeren in C++.

Voor de berekeningen worden de huisregels van blackjack in HC gebruikt. Dat wil zeggen:

- BJ betaalt 3:2

- je mag alleen bij totalen 9, 10 en 11 verdubbelen

- verdubbelen na splitsen is toegestaan

- dealer past bij soft 17

- je mag oneindig vaak splitsen

Als enige afwijking zal ik in eerste instantie gebruik maken van een slof met oneindig veel kaartspellen (in tegenstelling tot de 6 die HC gebruikt). Zo heeft elke kaart A t/m K altijd een kans van 1/13 om gepakt te worden. Wellicht moet ik dan wel de regel 'oneindig splitsen' omzetten in 'maximaal vier keer splitsen'. Dit zal niet tot hele andere uitkomsten leiden. Als ik denk dat het niet veel extra tijd kost om de berekeningen ook voor een slof met 6 kaartspellen te maken, zal ik dat ook doen.

Af en toe zal ik wellicht ook berekeningen van kansen met de hand maken. Hiervoor zal ik de wetenschappelijke notatie P(X=x) gebruiken, wat niets anders betekent dan de kans dat een stochast X de waarde x heeft. P(dealer totaal = 17) staat dus voor de kans dat de dealer een totaal van 17 heeft. Voorwaardelijke kansen zullen hierbij ook voorbij komen. De notatie daarvoor is P(X=x | Y=y), bijvoorbeeld P(dealer totaal = 17 | up card = 8), wat staat voor 'de kans dat de dealer een totaal van 17 krijgt, gegeven dat hij een 8 als upcard heeft.

In eerste instantie zal ik beginnen met berekeningen waarmee we kunnen controleren of de basisstrategie zoals die in dit artikel te vinden is, correct is. Hopelijk door exacte berekeningen, maar in sommige gevallen wellicht door simulaties omdat dat eenvoudiger te programmeren is. Uit al deze berekeningen kunnen we dan uiteindelijk hopelijk het huisvoordeel berekeningen.

Klik hier voor de beste reviews en bonussen!

Geplaatst

De eerste resultaten zijn binnen. De eerste code die ik heb geschreven bepaalt voor elke dealer up card alle mogelijke handen die hij kan krijgen en berekent vervolgens de kans op deze hand, gegeven de up card. De kansen van alle handen met dezelfde up card en hetzelfde eindtotaal worden vervolgens bij elkaar op geteld. Voor de berekening ben ik uit gegaan van een slof met oneindig veel decks, dus de kans dat de dealer eindigt met de hand T332 gegeven dat hij begint met een T is (1/13)^3. Verder heb ik de TJQK als afzonderlijke kaarten gehouden (maar wel als 10 genoteerd), zodat ik daar ook gewoon de kans 1/13 kon gebruiken. Vandaar dat bijvoorbeeld 10 10 vier keer in de mogelijke handen voorkomt (de lijst kun je hier vinden: dealer hands). De resultaten zijn als volgt:

Dealer Total    17           18           19           20           21           >21
Dealer
Up Card
1:      	13.08        13.08        13.08        13.08        36.16        11.53
2:     		13.98        13.49        12.97        12.40        11.80        35.36
3:      	13.50        13.05        12.56        12.03        11.47        37.39
4:      	13.05        12.59        12.14        11.65        11.12        39.45
5:      	12.23        12.23        11.77        11.31        10.82        41.64
6:      	16.54        10.63        10.63        10.17         9.72        42.32
7:      	36.86        13.78         7.86         7.86         7.41        26.23
8:      	12.86        35.93        12.86         6.94         6.94        24.47
9:      	12.00        12.00        35.08        12.00         6.08        22.84
10:      	11.14        11.14        11.14        34.22        11.14        21.21

De kans dat de dealer eindigt met een totaal van 19 als hij een 4 als up card heeft is dus 12,14%. De laatste kolom bevat de doodkoop percentages. De percentages hier gevonden liggen heel dicht bij de percentages die ook te vinden zijn in hoofdstuk 2 van The Theory of blackjack, waar van een single deck werd uitgegaan.

Naast deze exacte berekening heb ik ook een simulatie geschreven die voor elke up card van de dealer een miljard handen deelt. Voor elke upcard telt hij alle handen met hetzelfde eindtotaal en zet dit om in een percentage. Het programma er een kleine 10 minuten over om dit allemaal door te rekenen. De resultaten hiervan staan hieronder.

Dealer Total   17         18         19         20         21         >21
Dealer
Up Card
1              13.08      13.08      13.08      13.08      36.15      11.52      
2              13.99      13.49      12.97      12.41      11.79      35.35      
3              13.50      13.05      12.56      12.04      11.47      37.38      
4              13.05      12.60      12.14      11.65      11.12      39.44      
5              12.23      12.23      11.77      11.31      10.83      41.64     
6              16.55      10.62      10.63      10.17       9.72      42.31      
7              36.85      13.78       7.86       7.86       7.41      26.24      
8              12.86      35.93      12.86       6.94       6.94      24.47      
9              12.00      12.00      35.07      12.00       6.09      22.84      
10             11.14      11.14      11.14      34.21      11.14      21.21      

Zoals je ziet zijn de resultaten van de simulatie nagenoeg exact gelijk aan die van de exacte berekening, slechts af en toe wijkt hij 1/100 af. Om de discussie over de sample size af te sluiten heb ik ook een simulatie van 200 handjes voor elke dealer up card gemaakt. Resultaten hiervan staan hieronder.

Dealer Total   17         18         19         20         21         >21
Dealer
Up Card
1              12.50      11.50      14.50       9.50      34.50      17.50      
2              11.50      13.00      13.00      14.00      10.00      38.50      
3              11.50       9.00      16.50      12.50      11.50      39.00      
4              15.50      14.50       9.00       9.50       8.00      43.50      
5              14.00      11.00      11.50      11.00      16.50      36.00      
6              19.00       8.00       9.00      13.50       8.50      42.00      
7              32.50      14.00       8.50       7.00       8.50      29.50      
8              11.00      35.50      17.50       4.50       9.00      22.50      
9              16.00      14.00      28.50       9.50       6.50      25.50      
10             11.00       9.00      11.00      34.50       9.50      25.00      

Zoals je ziet zitten deze resultaten er geregeld meerdere procenten naast. Het lijkt me duidelijk dat een sample size van 200 handjes veel te klein is om betrouwbare cijfers te krijgen.

Voor de geïnteresseerden hieronder de code voor de exacte berekening.

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <fstream>
#include <iomanip>

using namespace std;


int findFirstZero(int dealerHand[])
{
    for (int i = 0;i < 15;i++)
    {
        if (dealerHand[i] == 0)
            return i;
    }
    return 15;
}

int calculateDealerTotal(int dealerHand[])
{
    int total = 0;
    for (int i = 0;i < 15;i++)
        total = total + dealerHand[i];
    return total;
}

bool checkForAce(int dealerHand[])
{
    for (int i = 0;i < 15;i++)
    {
        if (dealerHand[i] == 1)
            return true;
    }
    return false;
}

void printDealerHand(int dealerHand[], ofstream& dealerHands)
{

    dealerHands << dealerHand[0];
    for (int i = 1;i < 15;i++)
    {
        if (dealerHand[i] == 0)
        {
           dealerHands <<  endl;
           break;
        }
        else
            dealerHands << ", " << dealerHand[i];
    }
}

void printDealerOddsPerUpCard(float dealerOddsPerUpCard[][6], ofstream& dealerHands)
{
    dealerHands << "Dealer Total     17           18         19          20        21            >21" << endl;
    dealerHands << "Dealer" << endl;
    dealerHands << "Up Card" << endl;
    for (int i = 1;i < 11;i++)
    {
        dealerHands << i << ":      ";
        for (int j = 0;j < 6;j++)
        {
            if (j == 5)
                dealerHands << setprecision(2) << fixed << dealerOddsPerUpCard[i][j] * 100 << endl;
            else
                dealerHands << setprecision(2) << fixed << dealerOddsPerUpCard[i][j] * 100 << "        ";

        }

    }
}

float calculateHandOdds(int dealerHand[])
{
    float odds = 1;
    for (int i = 1;i < 15; i++)
    {
        if (dealerHand[i] != 0)
            odds = odds * 1 / 13;
    }
    return odds;
}

void addCard(int dealerHand[], ofstream& dealerHands, int dealerTotalsPerUpCard[][6], float dealerOddsPerUpCard[][6])
{
    int newCard;
    int indexFirstZero;
    int dealerTotal;
    float handOdds;
    indexFirstZero = findFirstZero(dealerHand);
    for (int i = 1;i <=13;i++)
    {
        if (i > 9)
            newCard = 10;
        else
            newCard = i;
        dealerHand[indexFirstZero] = newCard;
        dealerTotal = calculateDealerTotal(dealerHand);
        if ((dealerTotal > 16) || ((checkForAce(dealerHand)) && ((dealerTotal + 10) > 16) && ((dealerTotal + 10) <= 21)))
        {
            printDealerHand(dealerHand, dealerHands);
            if (dealerTotal < 16)
                dealerTotal = dealerTotal + 10;
            handOdds = calculateHandOdds(dealerHand);
            switch(dealerTotal)
                {
                case 17:
                    dealerTotalsPerUpCard[dealerHand[0]][0]++;
                    dealerOddsPerUpCard[dealerHand[0]][0] += handOdds;
                    break;
                case 18:
                    dealerTotalsPerUpCard[dealerHand[0]][1]++;
                    dealerOddsPerUpCard[dealerHand[0]][1] += handOdds;
                    break;
                case 19:
                    dealerTotalsPerUpCard[dealerHand[0]][2]++;
                    dealerOddsPerUpCard[dealerHand[0]][2] += handOdds;
                    break;
                case 20:
                    dealerTotalsPerUpCard[dealerHand[0]][3]++;
                    dealerOddsPerUpCard[dealerHand[0]][3] += handOdds;
                    break;
                case 21:
                    dealerTotalsPerUpCard[dealerHand[0]][4]++;
                    dealerOddsPerUpCard[dealerHand[0]][4] += handOdds;
                    break;
                default:
                    dealerTotalsPerUpCard[dealerHand[0]][5]++;
                    dealerOddsPerUpCard[dealerHand[0]][5] += handOdds;
                }
        }

        else
        {
            addCard(dealerHand, dealerHands, dealerTotalsPerUpCard, dealerOddsPerUpCard);
        }
        dealerHand[indexFirstZero] = 0;
    }
    return;
}


int main()
{
    ofstream dealerHands;
    dealerHands.open("dealerHands.txt");
    bool softHand;
    int dealerHand[15] = {0};
    int dealerTotalsPerUpCard[11][6] = {0};
    float dealerOddsPerUpCard[11][6] = {0};

    for (int dealerUpCard = 1;dealerUpCard <= 10; dealerUpCard++)
    {
        dealerHand[0] = dealerUpCard;
        addCard(dealerHand, dealerHands, dealerTotalsPerUpCard, dealerOddsPerUpCard);
    }
    printDealerOddsPerUpCard(dealerOddsPerUpCard, dealerHands);
    dealerHands.close();
}

En de code voor de simulatie.

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <fstream>
#include <iomanip>

using namespace std;

int randomCard()                //genereert random getal 1-13
{
    int card = rand() % 13 + 1;
    if (card > 9)               //getallen > 9 worden veranderd in 10
        card = 10;
    return card;
}

int main()
{
    srand(time(0));
    int dealerTotals[11][6] = {};    
    int dealerTotal;
    int newCard;
    bool softTotal;
    int numberOfHands = 1000000000;

    for (int i = 0; i < numberOfHands; i++)
    {
        for (int dealerUpCard = 1;dealerUpCard <= 10;dealerUpCard++)
        {
            if (dealerUpCard == 1)
                softTotal = true;
            else
                softTotal = false;
            dealerTotal = dealerUpCard;
            while (dealerTotal < 17)
            {
                newCard = randomCard();
                dealerTotal = dealerTotal + newCard;
                if (newCard == 1)
                    softTotal = true;
                if ((softTotal) && (dealerTotal + 10 > 16) && (dealerTotal + 10 < 22))  
                    dealerTotal = dealerTotal + 10;
                if (dealerTotal > 16)                           
                {
                    switch(dealerTotal)
                    {
                    case 17:
                        dealerTotals[dealerUpCard][0]++;
                        break;
                    case 18:
                        dealerTotals[dealerUpCard][1]++;
                        break;
                    case 19:
                        dealerTotals[dealerUpCard][2]++;
                        break;
                    case 20:
                        dealerTotals[dealerUpCard][3]++;
                        break;
                    case 21:
                        dealerTotals[dealerUpCard][4]++;
                        break;
                    default: dealerTotals[dealerUpCard][5]++; //dealerTotal > 21
                    }
                }
            }
        }

    }

    ofstream dealerHand;
    dealerHand.open("dealerHand.txt");
    dealerHand << "Dealer Total     17           18         19          20        21            >21" << endl;
    dealerHand << "Dealer" << endl;
    dealerHand << "Up Card" << endl;
    float percentage;
    float totalPercentage;
    for (int upCard = 1;upCard <= 10;upCard++)
    {
        dealerHand << upCard << "              ";
        totalPercentage = 0;
        for (int i = 0;i < 6;i++)
        {
            percentage = (float) dealerTotals[upCard][i] / (float) numberOfHands * (float)100;
            dealerHand << setprecision(2) << fixed <<  percentage << "      ";
            totalPercentage = totalPercentage + percentage;
        }
        dealerHand << setprecision(2) << fixed << totalPercentage << endl;
    }
    dealerHand.close();
}

 

Geplaatst

Het bleek makkelijker dan verwacht om het programma met de exacte berekeningen om te zetten naar één die de berekeningen maakt gebaseerd op een slof met 6 decks. De resultaten hiervan staan hieronder. Zoals je ziet verschilt het erg weinig met de berekeningen van een slof met een oneindig aantal decks, meestal slechts enkele honderdsten.

Dealer Total     17          18           19          20            21           >21
Dealer
Up Card
1:   		13.00        13.08        13.06        13.09        36.22        11.55
2:      	13.97        13.44        13.00        12.40        11.84        35.35
3:      	13.43        13.05        12.52        12.08        11.49        37.42
4:      	13.06        12.41        12.13        11.64        11.19        39.58
5:      	12.18        12.24        11.76        11.18        10.79        41.84
6:      	16.57        10.62        10.64        10.16         9.73        42.28
7:      	36.92        13.79         7.84         7.87         7.38        26.19
8:      	12.89        36.00        12.87         6.92         6.95        24.37
9:      	12.03        11.73        35.19        12.04         6.09        22.92
10:      	11.19        11.17        11.19        34.00        11.20        21.25

Ik zie in mijn vorige post dat de programma code wel erg veel ruimte inneemt, dus die zal ik in het vervolg weglaten. Mocht iemand interesse hebben, dan kan ik ze altijd mailen.

Geplaatst

Nu we de kansen van elke dealeruitkomst weten, kunnen we deze gebruiken om de beste beslissing voor elke spelershand te berekenen en de daarbij horende verwachtingswaarde. Uit al die verwachtingswaarden samen kunnen we dan de totale verwachtingswaarde van de basisstrategie berekenen.

Voor deze berekeningen zal ik de waarden uit de tabel voor een slof met een oneindig aantal kaartspellen gebruiken, zodoende hoeft er geen rekening te worden gehouden met de exacte samenstelling van de hand. Dit scheelt enorm in de hoeveelheid rekenwerk. Hieronder nogmaals de dealerkansen. Ik heb ze van percentages omgezet naar kansen en daarnaast heb ik de waarden voor een totaal van 21 met als upcard een A of T gesplitst in kansen op een blackjack en een normale 21.

 

Dealer Total    17           18           19           20           21            	>21
Dealer								    21	   BJ
Up Card								    
1:    		0.1308        0.1308      0.1308        0.1308      0.0539/0.3077 	0.1153
2:      	0.1398        0.1349      0.1297        0.1240      0.1180        	0.3536
3:      	0.1350        0.1305      0.1256        0.1203      0.1147        	0.3739
4:      	0.1305        0.1259      0.1214        0.1165      0.1112        	0.3945
5:      	0.1223        0.1223      0.1177        0.1131      0.1082        	0.4164
6:      	0.1654        0.1063      0.1063        0.1017      0.0972        	0.4232
7:      	0.3686        0.1378      0.0786        0.0786      0.0741        	0.2623
8:      	0.1286        0.3593      0.1286        0.0694      0.0694        	0.2447
9:      	0.1200        0.1200      0.3508        0.1200      0.0608        	0.2284
10:      	0.1114        0.1114      0.1114        0.3422      0.0345/0.0769 	0.2121

Zonder te rekenen kunnen we al bedenken dat de beste strategie voor een spelertotaal van 21 is om te passen. Neem je een kaart, heb je namelijk altijd te veel (ik ga eerst even uit van hard totals) en is je verwachtingswaarde -1 (inzet voor alle berekeningen is 1). Neem je geen kaart zul je af en toe winnen en is je verwachtingswaarde dus groter dan -1. Ook deze verwachtingswaarde kunnen we in tweeën splitsen, de verwachtingswaarde voor een blackjack en de verwachtingswaarde voor een normale 21.

De verwachtingswaarde berekenen we door alle mogelijke uitkomsten met de kans op die uitkomst te vermenigvuldigen en al deze producten bij elkaar op te tellen. Voor de verwachtingswaarde als de speler een blackjack heeft tegen een tien van de dealer, zijn er slechts twee mogelijkheden: de dealer heeft ook een blackjack, dan is de winst 0, of de dealer heeft geen blackjack, dan is de winst 1.5. Vermenigvuldigen we deze met hun bijbehorende kansen en tellen we die op, dan krijgen we dus:

E(P=BJ | D=10) = 0 * 0.0769 + 1.5 * (1 - 0.0769) = 1.3847

Voor de verwachtingswaarde van een normale 21 van de speler tegen een T van de dealer zijn er drie mogelijkheden: de dealer heeft een blackjack (winst = -1), de dealer heeft een normale 21 (winst = 0) of de dealer heeft een totaal ongelijk aan 21 (winst 1). De verwachtingswaarde wordt hier dus:

E(P=21 | D=10) = -1 * 0.0769 + 0 * 0.0345 + 1 * (1 - 0.0769 - 0.0345) = 0.8117

Dezelfde berekeningen kunnen we maken voor alle andere upcards van de dealer. De verwachtingswaarde voor een speler blackjack tegen een dealer 2 t/m 9 is lekker makkelijk. Je wint namelijk altijd 1.5 keer je inzet. Dus

E(P=BJ | D= 2 t/m9) = 1.5

Ook voor de normale 21 zijn er maar twee mogelijkheden, de dealer heeft ook 21 (winst = 0), of de dealer heeft geen 21 (winst = 1), dus

E(P=21 | D = 2 t/m 9) = 0 * P(D=21) + 1 * P(D geen 21)

dit geeft achtereenvolgens:

E(P=21 | D = 2) = 1 * (1 - 0.1180) = 0.8820

E(P=21 | D = 3) = 1 * (1 - 0.1147) = 0.8853

E(P=21 | D = 4) = 1 * (1 - 0.1112) = 0.8888

E(P=21 | D = 5) = 1 * (1 - 0.1082) = 0.8918

E(P=21 | D = 6) = 1 * (1 - 0.0972) = 0.9028

E(P=21 | D = 7) = 1 * (1 - 0.0741) = 0.9259

E(P=21 | D = 8) = 1 * (1 - 0.0694) = 0.9306

E(P=21 | D = 9) = 1 * (1 - 0.0608) = 0.9392

 

De verwachtingswaarde tegen een A van de dealer berekenen we weer op dezelfde manier als tegen een T:

 

E(P=BJ | D=A) = 0 * 0.3077 + 1.5 * (1 - 0.3077) = 1.0385

E(P=21 | D=A) = -1 * 0.3077 + 0 * 0.0539 + 1 * (1 - 0.3077 - 0.0539) = 0.3307

 

We hebben nu dus een gedeelte van de basisstrategie bepaald en de daarbij behorende verwachtingswaarden:

Basisstrategie (S=stand)
Dealer Up Card	A	2	3	4	5	6	7	8	9	T
Player Total
BJ		S	S	S	S	S	S	S	S	S	S
21		S	S	S	S	S	S	S	S	S	S

Verwachtingswaarde basisstrategie
Dealer Up Card	A	2	3	4	5	6	7	8	9	T
Player Total
BJ		1.0385	1.5	1.5	1.5	1.5	1.5	1.5	1.5	1.5	1.3847
21		0.3307	0.8820	0.8853	0.8888	0.8918	0.9028	0.9259	0.9306	0.9392	0.8117

In een volgende post gaan we hetzelfde doen voor een spelertotaal van 20.

Geplaatst

Mijn complimenten voor het gedegen werk dat je nu aan het doen bent. Dit nu juist was, wat ik altijd gemist heb in mijn discussies met BJ specials. Zonder computer zijn deze berekeningen niet te doen. CC++ beheers ik niet, maar mijn Excel programma`s doen grosso modo hetzelfde. Ik ben er ook altijd van uitgegaan dat het verschil tussen 6 decks en oneindig aantal decks minimaal en verwaarloosbaar is.

Ik heb altijd gezegd dat de Basic Strategie geen verwachtingswaarde heeft. Jij berekend nu ook verwachtingswaarde voor verschillende combinaties. Het gevolg hiervan is dat je straks ook verschillende HE voor alle combinaties kunt berekenen. Dit heb ik ook met mijn programma gedaan. 200 handjes per combinatie is naar mijn mening voldoende.

Je kunt wel begrijpen dat ik reuze nieuwsgierig ben naar het eindresultaat.

Zonder computers hebben de wetenschappers in 1956 dit niet kunnen doen.

Nogmaals mijn waardering en ik vind het leuk dat je mijn uitdaging hebt aangenomen.

Geplaatst
2 minuten geleden zei dobbelsteen:

Ik heb altijd gezegd dat de Basic Strategie geen verwachtingswaarde heeft. Jij berekend nu ook verwachtingswaarde voor verschillende combinaties. Het gevolg hiervan is dat je straks ook verschillende HE voor alle combinaties kunt berekenen. Dit heb ik ook met mijn programma gedaan. 200 handjes per combinatie is naar mijn mening voldoende.

Hieruit blijkt dat je nog steeds niet helemaal begrijpt wat de verwachtingswaarde precies is. In het geval van gokspelletjes is de verwachtingswaarde niets anders dan de gemiddeld verwachte winst van een inzet. Een verwachtingswaarde houdt dus niets anders in dan een gemiddelde berekenen. Het gemiddelde bereken je door alle mogelijke uitkomsten te vermenigvuldigen met hun kans en deze producten bij elkaar op te tellen. Bij roulette is dat zeer eenvoudig vanwege het beperkt aantal mogelijkheden. BIj blackjack is dat lastiger, maar zodra de huisregels en de strategie vast ligt, kun je daar dus een gemiddelde uitkomst berekenen. Dat is waar ik nu mee begonnen ben.

Je hebt wel gelijk dat we straks voor alle mogelijke combinaties verschillende verwachtingswaarden hebben, maar dat is ook nog niet de uiteindelijke verwachtingswaarde. De uiteindelijke verwachtingswaarde van de basisstrategie is weer het gemiddelde van al die verschillende verwachtingswaarden. Net zoals ik in mijn post hierboven gebruik maak van de verwachtingswaarde E(P=21|D=10, stand) om de verwachtingswaarde E(P=20|D=10, hit) te berekenen, zo worden straks al die verwachtingswaarden van de gevonden strategie gebruikt om de overall verwachtingswaarde te berekenen.

Ik zou heel graag willen dat je nog eens goed kijkt naar de uitkomsten van de simulatie van 200 handjes die ik mijn tweede post in deze thread gegeven heb. De uitkomsten daarvan wijken zo erg af van de uitkomsten van de simulatie van 1 miljard handen dat je toch echt zult moeten toegeven dat 200 handjes niet genoeg is. We hebben het namelijk wel over een uiteindelijk verschil in house edge van maar 1.5% (is het 0.5% of 2%?). Veel waarden met de simulatie van 200 handjes wijken al meer dan dat af van de werkelijke waarden, dus je kunt echt niet met goed fatsoen blijven beweren dat 200 handjes een betrouwbaar resultaat geven.

Geplaatst

Ik zie dat ik in mijn post hier boven refereer aan een post die ik nog niet geplaatst had. Bij deze:

Om de verwachtingswaarden te berekenen in het geval de speler 20 heeft, moeten we eerst de basisstrategie bepalen. Dat betekent dat we de verwachtingswaarden berekenen in het geval de speler past, maar ook in het geval de speler een kaart neemt. Het geval met de hoogste verwachtingswaarde is onze basisstrategie.

De verwachtingswaarden als de speler 20 heeft en past, worden uiteraard op dezelfde manier berekend als in mijn vorige post waar de speler 21 had. Hieronder de berekening in het geval de dealer een A heeft:

E(P=20 | D=A, stand) = 1 * P(D<20 of D>21) + 0 * P(D=20) - 1 * P(D=21)

                                      = 1 * (0.1308 + 0.1308 + 0.1308 + 0.1153) - 1 * 0.3616

                                      = 0.1461

Als de speler een kaart neemt op 20, zijn er twee mogelijkheden: hij krijgt 21, of hij krijgt te veel. De kans op 21 is 1/13 en de kans op teveel is 12/13. Heeft hij teveel, dan verliest hij zijn inzet, heeft hij 21, dan is zijn winst gelijk aan de verwachtingswaarde die we in de vorige post hebben berekend bij het geval dat de speler een normale 21 heeft en de dealer een A, namelijk 0.3307. De verwachtingswaarde wordt in dit geval dus:

E(P20 | D=A, hit) = 1/13 * 0.3307 + 12/13 * -1 = -0.8976

Deze verwachtingswaarde is lager dan de verwachtingswaarde van passen en dus geldt voor de basisstrategie dat we bij 20 tegen een A passen en de bijbehorende verwachtingswaarde is 0.1461.

Doen we ditzelfde voor elke mogelijke upcard van de dealer, dan zien we dat in alle gevallen de verwachtingswaarde voor passen hoger is, zoals je hieronder kunt zien.


E(P=20 | D=2, stand) = -1 * 0.1180 + 1 * (1 - 0.1180 - 0.1240) = 0.6400		
E(P20 | D=2, hit) = 1/13 * 0.8820 + 12/13 * -1 = -0.8552

E(P=20 | D=3, stand) = -1 * 0.1147 + 1 * (1 - 0.1147 - 0.1203) = 0.6503		
E(P20 | D=3, hit) = 1/13 * 0.8853 + 12/13 * -1 = -0.8550

E(P=20 | D=4, stand) = -1 * 0.1112 + 1 * (1 - 0.1112 - 0.1165) = 0.6611		
E(P20 | D=4, hit) = 1/13 * 0.8888 + 12/13 * -1 = -0.8547

E(P=20 | D=5, stand) = -1 * 0.1082 + 1 * (1 - 0.1082 - 0.1131) = 0.6705		
E(P20 | D=5, hit) = 1/13 * 0.8918 + 12/13 * -1 = -0.8545

E(P=20 | D=6, stand) = -1 * 0.0972 + 1 * (1 - 0.0972 - 0.1017) = 0.7039		
E(P20 | D=6, hit) = 1/13 * 0.9028 + 12/13 * -1 = -08536

E(P=20 | D=7, stand) = -1 * 0.0741 + 1 * (1 - 0.0741 - 0.0786) = 0.7732		
E(P20 | D=7, hit) = 1/13 * 0.9259 + 12/13 * -1 = -0.8519

E(P=20 | D=8, stand) = -1 * 0.0694 + 1 * (1 - 0.0694 - 0.0694) = 0.7918		
E(P20 | D=8, hit) = 1/13 * 0.9306 + 12/13 * -1 = -0.8515

E(P=20 | D=9, stand) = -1 * 0.0608 + 1 * (1 - 0.0608 - 0.1200) = 0.7584		
E(P20 | D=9, hit) = 1/13 * 0.9392 + 12/13 * -1 = -0.8508

E(P=20 | D=T, stand) = -1 * 0.1114 + 1 * (1 - 0.1114 - 0.3422) = 0.4350		
E(P20 | D=T, hit) = 1/13 * 0.8117 + 12/13 * -1 = -0.8606

 

  • 2 weken later...
Geplaatst

Een paar dagen weg, een paar dagen ziek en het samenvoegen van losse stukken code tot één programma heeft er voor gezorgd dat er even geen vooruitgang was. Door van de losse stukken code één programma te maken kan ik straks ook eenvoudig uitrekenen wat bijvoorbeeld de invloed is van de blackjack uitbetaling of het wel of niet passen van de dealer bij soft 17.

Om verder te gaan waar ik gebleven was, de verwachtingswaarden wanneer een speler 19,18 of 17 heeft worden op dezelfde manier uitgerekend als wanneer hij 20 heeft. Ik zal van elke waarde de berekening van passen en een kaart kopen tegen een T van de dealer geven.

E(P=19|D=10, stand) = 1 * P(D<19 of D>21) - 1 * P(D=20 of D=21) = 1 * (0.1114 + 0.1114 + 0.2121) - 1 * (0.3422 + 0.1114) = - 0.0187

E(P=19|D=10, hit) = 1/13 * (E(P=20|D=10,stand) + E(P=21|D=10,stand)) - 1 * 11/13 = 1/13 * 0.4350 + 1/13 * 0.8117 - 1 * 11/13 = - 0.7503

 

Duidelijk is dat passen beter is dan een kaart nemen. Maar ook zie je dat je verwachtingswaarde van 19 tegen een T al negatief is, zelfs als je past.

 

Voor een totaal van 18 geldt:

E(P=18|D=10, stand) = 1 * P(D=17 of D>21) - 1 * P(18<D<22) = 1 * (0.1114 + 0.2121) - 1 * (0.1114 + 0.3422 + 0.1114) = - 0.2415

E(P=18|D=10, hit) = 1/13 * (E(P=19|D=10,stand) + E(P=20|D=10,stand) + E(P=21|D=10,stand) )- 1 * 10/13 = 1/13 * -0.0187 + 1/13 * 0.4350 + 1/13 * 0.8117 - 1 * 10/13 = -0.6748

 

En voor een totaal van 17 geldt:

E(P=17|D=10, stand) = 1 * P(D>21) - 1 * P(17<D<22) = 1 * 0.2121 - 1 * (0.1114 + 0.1114 + 0.3422 + 0.1114) = -0.4643

E(P=17|D=10, hit) = 1/13 * (E(P=18|D=10,stand) + E(P=19|D=10,stand) + E(P=20|D=10,stand) + E(P=21|D=10,stand)) - 1 * 9/13

= 1/13 * -0.2415 + 1/13 * -0.0187 + 1/13 * 0.4350 + 1/13 * 0.8117 - 1 * 9/13 = -0.6164

 

Voor de totalen 17+ tegen een T is de beste strategie dus passen. Voeren we dezelfde berekeningen uit voor de andere dealer upcards dan vinden we dezelfde strategie. De bijbehorende verwachtingswaarden staan in de tabel hieronder. De kleine afwijking van de waarde bij 17 tegen een T komt omdat de getallen hierboven berekend zijn met getallen afgerond op 4 decimalen.

       A        2        3        4        5        6        7        8        9        T
17    -0.6386  -0.1530  -0.1172  -0.0806  -0.0449   0.0117  -0.1068  -0.3820  -0.4232  -0.4644  
18    -0.3771   0.1217   0.1483   0.1759   0.1996   0.2834   0.3996   0.1060  -0.1832  -0.2415  
19    -0.1155   0.3863   0.4044   0.4232   0.4395   0.4960   0.6160   0.5939   0.2876  -0.0187  
20     0.1461   0.6400   0.6503   0.6610   0.6704   0.7040   0.7732   0.7918   0.7584   0.4350  
21     0.3307   0.8820   0.8853   0.8888   0.8918   0.9028   0.9259   0.9306   0.9392   0.8117  

Geplaatst

Voor de harde totalen is er nog één waar ik de berekening met de hand laat zien en dat is het geval dat de speler 16 heeft tegen een tien van de dealer:

 

E(P=16 | D=10, stand) = 1 * P(D>21) - 1 * (1 - P(D>21) = 0.2121 - 0.7879 = -0.5758

E(P=16 | D=10, hit) = 1 / 13 * (E(P=17|D=10,stand) + E(P=18|D=10,stand) + E(P=19|D=10,stand) + E(P=20|D=10,stand)) + E(P=21|D=10,stand) - 1 * 8/13

= 1 / 13 * (-0.4643 - 0.2415 - 0.0187 + 0.4349 + 0.8117) - 8/13 = -0.5752

 

Je ziet dat de verwachtingswaarde voor het nemen van een kaart nu voor het eerst hoger is dan de verwachtingswaarde voor passen. Je ziet ook dat het verschil miniem is. Het is zo klein dat het in sommige gevallen dus toch beter zou zijn om te passen. Omdat rekening houden met de exacte samenstelling van handen de basisstrategie extreem complex zou maken, doen we dat niet en gaan we uit van de strategie die gemiddeld het beste zou zijn, in dit geval dus een kaart nemen.

Maken we deze berekeningen voor alle mogelijke harde totalen, dan komen we op de volgende verwachtingswaarden:

       A        2        3        4        5        6        7        8        9        T
 2    -0.4718  -0.1049  -0.0779  -0.0494  -0.0125   0.0119  -0.0624  -0.1395  -0.2251  -0.3297  
 3    -0.4866  -0.1268  -0.0944  -0.0610  -0.0236   0.0001  -0.0892  -0.1638  -0.2468  -0.3485  
 4    -0.5020  -0.1386  -0.1056  -0.0717  -0.0338  -0.0109  -0.1170  -0.1890  -0.2693  -0.3679  
 5    -0.5178  -0.1496  -0.1161  -0.0817  -0.0434  -0.0211  -0.1454  -0.2149  -0.2925  -0.3879  
 6    -0.5339  -0.1598  -0.1258  -0.0909  -0.0522  -0.0306  -0.1743  -0.2412  -0.3161  -0.4083  
 7    -0.5355  -0.1294  -0.0963  -0.0622  -0.0255   0.0079  -0.1035  -0.2349  -0.3052  -0.3886  
 8    -0.4682  -0.0526  -0.0219   0.0097   0.0430   0.0858   0.0410  -0.1060  -0.2451  -0.3303  
 9    -0.3869   0.0355   0.0634   0.0923   0.1227   0.1606   0.1284   0.0485  -0.1062  -0.2603  
10    -0.2928   0.1330   0.1580   0.1839   0.2113   0.2440   0.2082   0.1441   0.0565  -0.1134  
11    -0.2087   0.2384   0.2603   0.2830   0.3073   0.3337   0.2921   0.2300   0.1583   0.0334  
12    -0.5504  -0.2534  -0.2337  -0.2111  -0.1672  -0.1537  -0.2128  -0.2716  -0.3400  -0.4287  
13    -0.5825  -0.2928  -0.2522  -0.2111  -0.1672  -0.1537  -0.2691  -0.3236  -0.3872  -0.4695  
14    -0.6123  -0.2928  -0.2522  -0.2111  -0.1672  -0.1537  -0.3213  -0.3719  -0.4309  -0.5074  
15    -0.6400  -0.2928  -0.2522  -0.2111  -0.1672  -0.1537  -0.3698  -0.4168  -0.4716  -0.5425  
16    -0.6657  -0.2928  -0.2522  -0.2111  -0.1672  -0.1537  -0.4148  -0.4584  -0.5093  -0.5752  
17    -0.6386  -0.1530  -0.1172  -0.0806  -0.0449   0.0117  -0.1068  -0.3820  -0.4232  -0.4644  
18    -0.3771   0.1217   0.1483   0.1759   0.1996   0.2834   0.3996   0.1060  -0.1832  -0.2415  
19    -0.1155   0.3863   0.4044   0.4232   0.4395   0.4960   0.6160   0.5939   0.2876  -0.0187  
20     0.1461   0.6400   0.6503   0.6610   0.6704   0.7040   0.7732   0.7918   0.7584   0.4350  
21     0.3307   0.8820   0.8853   0.8888   0.8918   0.9028   0.9259   0.9306   0.9392   0.8117  

De bijbehorende strategie ziet er als volgt uit:
Hit or stand strategy for hard totals
      A  2  3  4  5  6  7  8  9  T
 2    h  h  h  h  h  h  h  h  h  h  
 3    h  h  h  h  h  h  h  h  h  h  
 4    h  h  h  h  h  h  h  h  h  h  
 5    h  h  h  h  h  h  h  h  h  h  
 6    h  h  h  h  h  h  h  h  h  h  
 7    h  h  h  h  h  h  h  h  h  h  
 8    h  h  h  h  h  h  h  h  h  h  
 9    h  h  h  h  h  h  h  h  h  h  
10    h  h  h  h  h  h  h  h  h  h  
11    h  h  h  h  h  h  h  h  h  h  
12    h  h  h  s  s  s  h  h  h  h  
13    h  s  s  s  s  s  h  h  h  h  
14    h  s  s  s  s  s  h  h  h  h  
15    h  s  s  s  s  s  h  h  h  h  
16    h  s  s  s  s  s  h  h  h  h  
17    s  s  s  s  s  s  s  s  s  s  
18    s  s  s  s  s  s  s  s  s  s  
19    s  s  s  s  s  s  s  s  s  s  
20    s  s  s  s  s  s  s  s  s  s  
21    s  s  s  s  s  s  s  s  s  s  

De verwachtingswaarden voor totalen kleiner dan 11 zijn nog niet volledig juist, omdat we tot nu toe van harde totalen zijn uitgegaan en dus eigenlijk de A als 1 hebben geteld.

Zo gebruikten we in de berekening voor het nemen van een kaart bij een totaal van 8 onder andere de verwachtingswaarde van het harde totaal 9, terwijl we daar eigenlijk de verwachtingswaarde van het softe totaal 19 zouden moeten gebruiken.

De volgende stap is dus om de verwachtingswaarden van de soft totalen te berekenen en vervolgens de verwachtingswaarden van de harde totalen te herberekenen.

Geplaatst

Voordat ik aan de soft totalen begin, wil ik eerst nog even kijken naar de strategie die we tot nu toe hebben gevonden.

Het leuke is, dat dat namelijk al een complete strategie met bijbehorende verwachtingswaarden is en we dus de totale verwachtingswaarde van deze strategie kunnen berekenen, ofwel het huisvoordeel. Dit doen we als volgt:

Voor elke mogelijke combinatie van eerste en tweede kaart van de speler en up card van de dealer (totaal 13*13*13 = 2197 combinaties) vermenigvuldigen we de kans op die combinatie (1/2197) met de bijbehorende verwachtingswaarde van het betreffende spelerstotaal tegen de betreffende dealer up card.

Laten we dit de computer uitrekenen, dan komen we op een verwachtingswaarde van -0.0523641. Ofwel een huisvoordeel van 5.24%.

Let wel, dit is dus het huisvoordeel van de strategie die we tot nu toe berekend hebben, dus zonder dubbelen en splitsen, en waarbij een A voor de speler altijd als 1 geldt, behalve bij een blackjack.

Om te controleren of mijn berekeningen juist zijn, heb ik ook een simulatie programma geschreven met deze strategie. Ik heb vijf keer een simulatie gedaan met 1.000.000 handen en vond achtereenvolgens de volgende verwachtingswaarden:

-0.0525

-0.0522

-0.0538

-0.0524

-0.0524

Deze waarden bevestigen wat mij betreft dat mijn exacte berekeningen correct zijn.

In het programma kan eenvoudig de uitbetaling voor een blackjack en of de dealer wel of niet past bij een soft 17 aangepast worden. Dat levert uiteraard andere huisvoordelen op:

De verwachtingswaarde van onze strategie tot nu toe waarbij de uitbetaling van blackjack geen 3/2 is, maar 6/5 is: -0.06589. Dat kost je dus ongeveer 1.25%.

De verwachtingswaarde als de dealer een kaart neemt op soft 17 is: -0.05428. Dat kost je dus ongeveer 0,18%.

Geplaatst
10 minuten geleden zei Hotrunner:

Waar is Dobbelsteen gebleven ?

Die is de vrachtwagenlading berekeningen van @DeValsspeler aan het controleren.

Als ik een potje ga blackjacken print ik ze allemaal uit , en neem ze mee om te bestuderen wanneer ik een lastige hand krijg , hahaha , laat de rest maar wachten.

Geplaatst

Ook voor de soft totals berekenen we de verwachtingswaarde als we passen en de verwachtingswaarde als we een kaart nemen. Dat eerste is makkelijk, want als we passen is onze verwachtingswaarde hetzelfde als wanneer we passen met hetzelfde hard total en die hebben we al berekend.

Als we een kaart nemen, zijn er 13 mogelijke kaarten die we kunnen krijgen en afhankelijk van die kaart moeten we de verwachtingswaarde van het harde of het softe nieuwe totaal gebruiken.

Bij soft 21 gebruiken we uiteraard alleen de verwachtingswaarden van hard 12 t/m hard 21:

E(soft 21) = 1/13 * (E(hard 12) + E(hard 13) + E(hard 14) + E(hard 15) + E(hard 16) + E(hard 17) + E(hard 18) + E(hard 19) + E(hard 20) + 4 * E(hard 21))

 

Bij soft 20 gebruiken we de verwachtingswaarde van soft 21 (als je een aas krijgt) en verder de verwachtingswaarden van hard 12 t/m 20:

E(soft 20) = 1/13 * (E(soft 21) + E(hard 12) + E(hard 13) + E(hard 14) + E(hard 15) + E(hard 16) + E(hard 17) + E(hard 18) + E(hard 19) + 4 * E(hard 20))

 

En voor soft 19:

E(soft 19) = 1/13 * (E(soft 20) + E(soft 21) + E(hard 12) + E(hard 13) + E(hard 14) + E(hard 15) + E(hard 16) + E(hard 17) + E(hard 18) + 4* E(hard 19))

 

En voor soft 18:

E(soft 18) = 1/13 * (E(soft 19) + E(soft 20) + E(soft 21) + E(hard 12) + E(hard 13) + E(hard 14) + E(hard 15) + E(hard 16) + E(hard 17) + 4 * E(hard 18))

 

Vergelijken we deze uitkomsten met die voor passen, dan vinden we de volgende beste strategie voor soft totals, met bijbehorende verwachtingswaarden.

Hit or stand strategy for soft totals
      A  2  3  4  5  6  7  8  9  T
12    h  h  h  h  h  h  h  h  h  h  
13    h  h  h  h  h  h  h  h  h  h  
14    h  h  h  h  h  h  h  h  h  h  
15    h  h  h  h  h  h  h  h  h  h  
16    h  h  h  h  h  h  h  h  h  h  
17    h  h  h  h  h  h  h  h  h  h  
18    h  s  s  s  s  s  s  s  h  h  
19    s  s  s  s  s  s  s  s  s  s  
20    s  s  s  s  s  s  s  s  s  s  
21    s  s  s  s  s  s  s  s  s  s  

EV best strategy soft total vs dealer card
       A        2        3        4        5        6        7        8        9        T
12    -0.3219   0.0818   0.1035   0.1266   0.1565   0.1860   0.1655   0.0951   0.0001  -0.1415  
13    -0.3474   0.0466   0.0741   0.1025   0.1334   0.1617   0.1224   0.0541  -0.0377  -0.1737  
14    -0.3727   0.0224   0.0508   0.0801   0.1119   0.1392   0.0795   0.0133  -0.0752  -0.2057  
15    -0.3977  -0.0001   0.0292   0.0593   0.0920   0.1182   0.0370  -0.0271  -0.1122  -0.2373  
16    -0.4224  -0.0210   0.0091   0.0400   0.0734   0.0988  -0.0049  -0.0668  -0.1486  -0.2684  
17    -0.4320  -0.0005   0.0290   0.0593   0.0912   0.1281   0.0538  -0.0729  -0.1498  -0.2586  
18    -0.3720   0.1217   0.1483   0.1759   0.1996   0.2834   0.3996   0.1060  -0.1007  -0.2097  
19    -0.1155   0.3863   0.4044   0.4232   0.4395   0.4960   0.6160   0.5939   0.2876  -0.0187  
20     0.1461   0.6400   0.6503   0.6610   0.6704   0.7040   0.7732   0.7918   0.7584   0.4350  
21     0.3307   0.8820   0.8853   0.8888   0.8918   0.9028   0.9259   0.9306   0.9392   0.8117 

 

Geplaatst

Nu de verwachtingswaarden voor de soft totalen zijn uitgerekend, kunnen we een nieuwe verwachtingswaarde voor de bijbehorende strategie berekenen, op dezelfde manier als we dat eerder deden:

Voor elke mogelijke combinatie van eerste en tweede kaart van de speler en up card van de dealer (totaal 13*13*13 = 2197 combinaties) vermenigvuldigen we de kans op die combinatie (1/2197) met de bijbehorende verwachtingswaarde van het betreffende spelerstotaal tegen de betreffende dealer up card.

Hier komt een verwachtingswaarde uit van -0.0242079, ofwel een huisvoordeel van 2,4%.

Een simulatie van deze strategie komt wederom nagenoeg op hetzelfde uit, dus ook hier kunnen we er op vertrouwen dat de berekeningen correct zijn.

Volgende stap is het berekenen van double down.

Geplaatst

Voor het berekenen van de verwachtingswaarden als we verdubbelen, moeten we met twee dingen rekening houden. Ten eerste dat onze inzet en dus ook onze uitbetaling verdubbelt, dus verwachtingswaarden die we eerder hebben berekent en gebruiken in deze berekeningen moeten we verdubbelen. Het tweede is dat we precies één kaart krijgen, we moeten dus gebruik maken van verwachtingswaarden die voor passen gelden.

Als voorbeeld nemen we 9 tegen een 2. Als we moesten kiezen tussen passen en een kaart nemen, dan zouden we een kaart nemen en de bijbehorende verwachtingswaarde is 0.0744.

Willen we verdubbelen, dan zijn er 13 kaarten die we kunnen krijgen. Het totaal dat die kaarten ons geven, daarvan gebruiken we de verwachtingswaarde in het geval we zouden passen. We krijgen dus:

E(dubbel op 9) = 2 * 1/13 * (E(20) + E(11) + E(12) + E(13) + E(14) + E(15) + E(16) + E(17) + E(18) + 4 * E(19))

Elke waarde heeft een kans van 1/13 om voor te komen, de E(20) is als we een A krijgen en er zijn vier mogelijkheden op een T, vandaar 4 * E(19).

Rekenen we dit uit, dan krijgen we:

2 * 1/13 (0.6400 + -0.2928 + -0.2928 + -0.2928 + -0.2928 + -0.2928 + -0.2928 + -0.1530 + 0.1217 + 4 * 0.3863) = 0.0611

Dit is lager dan de verwachtingswaarde voor het nemen van een kaart en dus nemen op 9 tegen een 2 een kaart. Rekenen we dit uit voor alle totalen 9, 10 en 11, dan vinden we de volgende verwachtingswaarden:

EV for doubling down
       A        2        3        4        5        6        7        8        9        T 
 9    -0.9151   0.0611   0.1208   0.1819   0.2431   0.3171   0.1043  -0.0264  -0.3010  -0.5847  
10    -0.6251   0.3589   0.4093   0.4609   0.5125   0.5756   0.3924   0.2866   0.1443  -0.1618  
11    -0.5399   0.4706   0.5178   0.5660   0.6147   0.6674   0.4629   0.3507   0.2278   0.0120  

Vergelijken we deze met de verwachtingswaarden die we tot nu toe gevonden hebben, dan levert dat de volgende strategie op:

Hit, stand or double strategy for hard totals
      A  2  3  4  5  6  7  8  9  T
 2    h  h  h  h  h  h  h  h  h  h  
 3    h  h  h  h  h  h  h  h  h  h  
 4    h  h  h  h  h  h  h  h  h  h  
 5    h  h  h  h  h  h  h  h  h  h  
 6    h  h  h  h  h  h  h  h  h  h  
 7    h  h  h  h  h  h  h  h  h  h  
 8    h  h  h  h  h  h  h  h  h  h  
 9    h  h  d  d  d  d  h  h  h  h  
10    h  d  d  d  d  d  d  d  d  h  
11    h  d  d  d  d  d  d  d  d  h  
12    h  h  h  s  s  s  h  h  h  h  
13    h  s  s  s  s  s  h  h  h  h  
14    h  s  s  s  s  s  h  h  h  h  
15    h  s  s  s  s  s  h  h  h  h  
16    h  s  s  s  s  s  h  h  h  h  
17    s  s  s  s  s  s  s  s  s  s  
18    s  s  s  s  s  s  s  s  s  s  
19    s  s  s  s  s  s  s  s  s  s  
20    s  s  s  s  s  s  s  s  s  s  
21    s  s  s  s  s  s  s  s  s  s   

De strategie voor soft totalen blijft onveranderd. De totale verwachtingswaarde van deze strategie is -0.012504, ofwel een huisvoordeel van 1,2%. We zitten dus al ruim onder de 2% en de strategie voor splitsen moet nog toegevoegd worden.

Geplaatst

Het splitsen levert enigszins problemen op als je meer dan één keer wilt splitsen. Dus eerst maar eens kijken hoe het gaat als we maar één keer splitsen. De verwachtingswaarde om bijvoorbeeld zessen te splitsen wordt als volgt berekend:

E(splits 6) = 2 * 1/13 * (E(soft 17) + E(hard 8) + E(hard 9) + E(hard 10) + E(hard 11) + E(hard 12) + E(hard 13) + E(hard 14) + E(hard 15) + 4 * E (hard 16))

De 2 * omdat we nu twee handen spelen, elk beginnend met een 6. De 1/13 omdat elke kaart die we erbij krijgen een kans van 1/13 heeft om te vallen. Als er een aas komt hebben we soft 17, dus vandaar E(soft 17) en de rest zijn harde totalen. Verder natuurlijk 4 * E(hard 16)  omdat we vier mogelijkheden op een tien hebben. Verder moeten we er even om denken dat we de verwachtingswaarden van de strategie inclusief verdubbelen gebruiken, omdat we na het splitsen nog mogen verdubbelen.

Reken we dit uit voor alle paren tegen de mogelijke kaarten van de dealer, dan krijgen we de volgende verwachtingswaarden, met de daarbij behorende beste strategie:

EV for splitting
       A        2        3        4        5        6        7        8        9        T
 1    -0.3219   0.4706   0.5178   0.5660   0.6147   0.6674   0.4629   0.3507   0.2278   0.0120  
 2    -0.4829  -0.0889  -0.0256   0.0429   0.1272   0.1920  -0.0074  -0.1593  -0.2407  -0.3439  
 3    -0.5183  -0.1382  -0.0639   0.0146   0.1001   0.1632  -0.0678  -0.2172  -0.2926  -0.3887  
 4    -0.4441  -0.0218   0.0080   0.0388   0.0750   0.1365   0.0822  -0.0599  -0.2102  -0.3071  
 5    -0.2513   0.3589   0.4093   0.4609   0.5125   0.5756   0.3924   0.2866   0.1443  -0.0536  
 6    -0.5504  -0.2186  -0.1407  -0.0587   0.0300   0.0882  -0.2128  -0.2716  -0.3400  -0.4287  
 7    -0.6123  -0.1555  -0.0793   0.0011   0.0852   0.1726  -0.0905  -0.3719  -0.4309  -0.5074  
 8    -0.6657   0.0193   0.0869   0.1566   0.2283   0.3255   0.2115  -0.0876  -0.4054  -0.5752  
 9    -0.3771   0.1846   0.2421   0.3015   0.3633   0.4434   0.3996   0.2153  -0.0937  -0.2415  
10     0.1461   0.6400   0.6503   0.6610   0.6704   0.7040   0.7732   0.7918   0.7584   0.4350  

      A  2  3  4  5  6  7  8  9  T
 1    -  p  p  p  p  p  p  p  p  p  
 2    -  p  p  p  p  p  p  -  -  -  
 3    -  p  p  p  p  p  p  -  -  -  
 4    -  -  -  -  p  p  -  -  -  -  
 5    -  -  -  -  -  -  -  -  -  -  
 6    -  p  p  p  p  p  -  -  -  -  
 7    -  p  p  p  p  p  p  -  -  -  
 8    -  p  p  p  p  p  p  p  p  -  
 9    -  p  p  p  p  p  -  p  p  -  
10    -  -  -  -  -  -  -  -  -  - 

Precies de strategie die we verwachten. Rekenen we nu weer de verwachtingswaarde van de complete strategie uit, dan krijgen we een verwachtingswaarde van -0.00769769, ofwel een huisvoordeel van 0,77%. Een simulatie van dezelfde strategie levert wederom een zelfde resultaat.

Als we vaker mogen splitsen, dan klopt deze berekening nog niet helemaal.

E(splits 6) = 2 * 1/13 * (E(soft 17) + E(hard 8) + E(hard 9) + E(hard 10) + E(hard 11) + E(hard 12) + E(hard 13) + E(hard 14) + E(hard 15) + 4 * E (hard 16))

De verwachtingswaarde E(hard 12) is namelijk een verwachtingswaarde van wederom twee zessen, die we dus weer mogen splitsen. In plaats van E(hard 12) zouden we dus weer het hele bovenstaande stuk moeten invullen. Maar daar zit ook weer E(hard 12) in en zo blijf je oneindig doorgaan en vind je dus nooit een waarde. We kunnen er wel voor kiezen om het programma slechts een aantal keer de E(hard 12) te laten vervangen door bovenstaande formule en de laatste keer de verwachtingswaarde van een normale harde 12 te gebruiken. Doen we dit bijvoorbeeld vier keer, dan vinden we nog steeds dezelfde strategie, maar het huisvoordeel is dan 0,64%.

Dit is de volledige berekening van het huisvoordeel van de basisstrategie van blackjack zoals dat in Holland Casino wordt gespeeld. De berekende strategie en het huisvoordeel komen overeen met de waarden die je overal op internet en in boeken van de gerenommeerde blackjack experts terug vindt. We hoeven er denk ik niet langer over te twijfelen wat het huisvoordeel van de basisstrategie nu is: 0,64%.

Neemt het huis een kaart op soft 17, dan stijgt het huisvoordeel naar 0,87%.

Mocht een blackjack slechts 6 tegen 5 uitbetalen, dan stijgt het huisvoordeel naar 1,99%.

En is beiden het geval, dan stijgt het huisvoordeel zelfs naar 2,22%.

 

Mocht @dobbelsteen nu nog twijfelen aan het huisvoordeel van 0,64% van de basisstrategie van blackjack zoals dit in Holland Casino wordt gespeeld dan heb ik hier nog een twee mooie filmpjes voor hem. Filmpjes gemaakt door de wizard of odds en die al ruim 2 jaar online staan, waarin hij de berekeningen van het huisvoordeel laat zien met behulp van excel. Iemand die zegt serieus onderzoek te doen naar het huisvoordeel van blackjack en dit met behulp van excel probeert uit te rekenen had deze filmpjes natuurlijk al lang zelf moeten vinden.

 

 

 

Geplaatst (bewerkt)

Mooie uitleg weer @DeValsspeler , ik volg dit topic aandachtig. Alleen van 0,87 % als het huis een kaart neemt op soft 17 begrijp ik niet, Kun je dit toelichten ?

Ik bedoel daar mee dat het huis dan zomaar 21 kan maken ; waar staat op dat moment die 0,87 % nog voor ?

bewerkt door babboe
Geplaatst

In de berekeningen van mijn tweede post staan de kansen voor alle dealertotalen. Dit zijn kansen als de dealer past op soft 17. De kansen als de dealer een kaart neemt op soft 17 zijn als volgt (heb ik destijds niet gepost omdat het ons om HC regels ging, maar heb het toen wel in het programma meegenomen, zodat ik ook het huisvoordeel voor een kaart nemen op soft 17 makkelijk kon uitrekenen):

Dealer Total   17            18            19            20            21            BJ            >21
Dealer
Up Card
 1:            0.0575        0.1432        0.1432        0.1432        0.0663        0.3077        0.1389
 2:            0.1301        0.1365        0.1313        0.1257        0.1196        0.0000        0.3567
 3:            0.1263        0.1320        0.1271        0.1218        0.1162        0.0000        0.3767
 4:            0.1224        0.1273        0.1228        0.1179        0.1126        0.0000        0.3971
 5:            0.1184        0.1229        0.1184        0.1138        0.1089        0.0000        0.4177
 6:            0.1148        0.1148        0.1148        0.1103        0.1057        0.0000        0.4395
 7:            0.3686        0.1378        0.0786        0.0786        0.0741        0.0000        0.2623
 8:            0.1286        0.3593        0.1286        0.0694        0.0694        0.0000        0.2447
 9:            0.1200        0.1200        0.3508        0.1200        0.0608        0.0000        0.2284
10:            0.1114        0.1114        0.1114        0.3422        0.0345        0.0769        0.2121

Verder gaan alle berekeningen hetzelfde, alleen moet je dus deze dealerkansen gebruiken. Je ziet dat de dealer in dit geval minder vaak een 17 krijgt en ook minder vaak teveel. Gemiddeld eindigt de dealer dus met een betere hand en dus zal het huisvoordeel ook wat groter zijn dan wanneer de dealer past op soft 17.

 

Geplaatst

In verband met mijn gezondheid moet ik uitkijken naar een aangepaste woning. Ik ben rond de jaarwisseling verhuisden woon nu in een soort serviceflat op 500 meter van het casino. Mijn computer had een lange tijd geen verbinding met het internet. Zo spoedig mogelijk word ik weer actief. Intussen heeft de valsspeler heel veel onderzoek gedaan en berekeningen gemaakt. Geweldig en veel lof

Mijn benadering van BJ is meer empirisch. Ik ben natuurlijk zeer benieuwd of deze wetenschappelijk benadering van de gemiddelde HE straks een beetje overeenkomt met die  van mij.

Doe mee aan het gesprek

Je kunt nu posten en later registreren. Als je een account hebt, Meld je nu aan om te posten met je account.

Gast
Reageer op deze discussie...

×   Je hebt opgemaakte inhoud geplakt.   Opmaak verwijderen

  Only 75 emoji are allowed.

×   Je link is automatisch geïntegreerd.   In plaats daarvan als link tonen

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Nieuwe aanmaken...

Belangrijke informatie

Door het Onetime Forum te bezoeken, ga je akkoord met onze Gebruiksvoorwaarden, Privacybeleid en We hebben cookies op uw apparaat geplaatst om deze website te verbeteren. U kunt uw cookie-instellingen aanpassen, anders gaan we ervan uit dat u akkoord gaat om door te gaan.