This dice Blackjack is game for two - bettor and dealer. It is played with fair six-sided dice.

Bettor: Bettor starts the game. Bettor can roll dice as many times he/she desires while the sum of rolls is lower than 21.

Dealer: Dealer plays after bettor. So dealer knows what sum bettor achieve. Dealer can roll dice as many times he/she desires while the sum of rolls is lower than 17.

Other rules: Winner is the one with lower penalization $ = \begin{cases} 21 - \sum,& \text{if } \sum \leq 21\\ 100, & \text{otherwise} \end{cases}$

where $\sum$ is sum of player rolls. If tie, dealer wins. Goal is to achieve as many wins as possible in huge number of games.

Example game:

Bettor starts:

  1. roll: 6, sum=6, no reason to stop
  2. roll: 5, sum=11, no reason to stop
  3. roll: 5, sum=16, risk to overcome 21 in next roll is acceptable for this guy
  4. roll: 4, sum=20, time to stop, risk is too high


  1. roll: 5, sum=5, no reason to stop
  2. roll: 5, sum=10, no reason to stop
  3. roll: 6, sum=16, 16 < 20, so the risk of overcome 21 is not important
  4. roll: 2, sum=18, still 18 < 20, but 17 was reached, dealer cannot continue and loose the game

Hypothesis (Nash equilibrium): There is simple ideal strategy for bettor - (for example stop rolling at sum of 18). Dealer can also have simple ideal strategy, if she/he expects that the bettor plays the ideal strategy.

Question: If the dealer plays the ideal strategy according to the hypothesis above, can a bettor do better with a strategy different from the optimal one from the hypothesis above?

In other words - can bettor use his/her strategy to fool dealer and get better outcome of the game?

If anything is not clear, please comment, I will do my best to improve the question.

  • $\begingroup$ Isn't there only one possible strategy for dealer? Roll until you tie or get more than the bettor? $\endgroup$ – ffao Jul 2 '17 at 8:53
  • $\begingroup$ @ffao My bad, I miss important thing! I will correct my question. $\endgroup$ – matousc Jul 2 '17 at 9:10
  • $\begingroup$ Could you give an example for the other rules part? having hard time to understand that part... $\endgroup$ – Oray Jul 2 '17 at 11:02
  • $\begingroup$ secondly, u stated that "Dealer can roll dice while the sum of rolls is lower than 17" that means even bettor got more than 17, dealer will stop rolling after getting 17? $\endgroup$ – Oray Jul 2 '17 at 11:03
  • 2
    $\begingroup$ Also, a Nash equilibrium doesn't seem meaningful here. The outcome for the dealer depends only on the outcome of the bettor and the strategy of the dealer, independent of the strategy of the bettor. How the bettor got to a certain score doesn't matter for the dealer, since the dealer knows the score of the bettor. $\endgroup$ – Discrete lizard Jul 2 '17 at 12:33

PARTIAL ANSWER (Until I understand it deeply)

Since we roll in this game with a dice and no limited and numbered cards included, it is the same game rolling a dice until 6. So the game becomes just roll a dice until you get as close as possible to 6. If you exceed you lose.

It is possible to show this with statistics, but I just wrote a program not to think over much since there is no no-computer tag in the question. but I believe it is also possible to do this with statistics.

For example, let say bettor tend to stop when he gets 1 or over. That means bettor will roll only once whatever so:

  • if bettor gets 1, he will lose whatsoever since the dealer will roll at least 1 and gets equality and win. Dealer lost chance is $0$
  • if bettor gets 2 on his roll, he will stop again, dealer will lose only if he gets 1 then 6. so the chance is $1/6*1/6=1/36$.
  • if bettor gets 3 on his roll, dealer will lose only if he get $1+6, 2+6, 2+5,1+1+6$. That means $1/6*1/6+1/6*2/6+1/6*1/6*1/6$
  • if bettor gets $4, 1+6, 2+(5,6),3+(4,5,6), 2+1+(4,5,6), 1+1+1+6, 1+2+(4,5,6),$ etc.

and this goes on like this, at the end you will sum these and find dealer's lost or bettor's win chance, that's why I just put this into a code :)

As a result,

if dealer plays until getting 17 or more and assuming bettor knows this, the the best strategy for bettor will stop after getting 18 of course.

The code is here here you can run it if we wish.

and the best strategy for dealer will of course play until he/she got more than bettor and this will change the bettor stopping point, which becomes 19 but the probability to win for bettor becomes much less than before $33.15\%$. so there is no better strategy for bettor whatever sum dealer will stop. always playing until 19 is the best!

  • $\begingroup$ Good job. You are probably right, only strategy suitable for dealer is to get higher then bettor no matter risk (simple enough). This fact simplify the bettor strategy to stop at some limit. My simulation of 10K games shows also that stop at 17 or 18 is the most proficient (and wining) strategy. $\endgroup$ – matousc Jul 2 '17 at 13:01

The Bettor should stop on a 19+

The Dealer should stop at:

  • 16+ if the bettor stopped at any number less than or equal to 16, or the bettor busted (exceeded 21)
  • [Number rolled 17+] As per rules of the game if the bettor has a value between 17 and 21 (inclusive)

This strategy gives the Bettor a 51.7% chance to win. (Stopping on an 18 only yields a 50.6% chance for the bettor, stopping on a 17 yields a miserable 39.7%)

I wrote a simple Excel sheet to compute the ability of the Dealer to meet or exceed any point value the Bettor establishes. This works out to 16: 1 17: .9521547617 18: 0.6654528369 19: 0.4276497659 20: 0.2383183971 21: 0.0955308937

Obviously, the Bettor will never want to end on 16 - the dealer will meet or exceed that value 100% of the time. 17 is also highly suspect (the only reason the "stand on a 17 or higher" rule succeeds as often as 42% of the time is that the odds of landing on a 17 by rolling are only ~28%).

For each Bettor choice, you simply have to compute the expected value, measuring the risk of busting vs. the lower chances of being met/exceeded on any non-busted roll.

This simply resolves to rolling on any 18 or below value.

  • $\begingroup$ Thanks for answer. Can you explain more your findings? According to my simulations if bettor does not stop at 18 the outcome is bad. $\endgroup$ – matousc Jul 2 '17 at 17:00
  • $\begingroup$ Did you factor in that the Dealer wins ties? Without that, I think 18 or higher is the correct stopping point. (Did I explain my math sufficiently?) $\endgroup$ – Jesse Jul 2 '17 at 17:08
  • $\begingroup$ Yes, I did my best to code the simulator exactly according to the rules - my friend also examine the code and all flaws founded we corrected together. $\endgroup$ – matousc Jul 2 '17 at 17:11
  • $\begingroup$ So, the only question is what happens in your simulator when the Bettor rolls an 18. If the Bettor stops, I have the Dealer winning 66.5% of the time. Does your simulator agree? I also have the Bettor "busting" 50% of the time if they continue rolling (simple math). I have the values for winning from 19-21 also selected. Can you confirm they match your simulator, by simply assigning the Bettor's role value and simulating 4 times? $\endgroup$ – Jesse Jul 2 '17 at 17:29
  • $\begingroup$ Sorry my bad, I use > instead of >=, so the actual winning strategies are stop at 18 and 19. However 20 and 21 are loosing strategies according simulator. $\endgroup$ – matousc Jul 2 '17 at 17:41

Not a Nash equilibrium as you are not reacting to the actions of you opponent

I ran a simulation and got stop/hold at

stop 15 win 2,851,591 win-loss -4,296,818 loss 7,148,409
stop 16 win 3,968,433 win-loss -2,063,134 loss 6,031,567
stop 17 win 5,060,864 win-loss 121,728 loss 4,939,136
stop 18 win 5,173,172 win-loss 346,344 loss 4,826,828
stop 19 win 4,330,529 win-loss -1,338,942 loss 5,669,471
stop 20 win 2,585,843 win-loss -4,828,314 loss 7,414,157

This is the code if you are interested

public static int Dice()
    int prime = 15;
    int win;
    int loss;
    int tie;
    Random rand = new Random();
    int fishScore;
    int dealerScore;
    for (int i = 15; i < 21; i++)
        win = 0;
        loss = 0;
        for (int j = 0; j < 10000000; j++)
            fishScore = 0;
            dealerScore = 0;
            while (fishScore <= i)
                fishScore += random.Next(1, 7);
            if (fishScore > 21)
                while (dealerScore < 17)
                    dealerScore += random.Next(1, 7);
                if (dealerScore > 21)
                else if(dealerScore >= fishScore)
        Debug.WriteLine("stop {0}  win {1}  win-loss {2}  loss {3}", i, win.ToString("N0"), (win - loss).ToString("N0"), loss.ToString("N0"));
    return prime;

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.