Share this

Last Updated: May 10, 2011

“Johnny Craps” Challenge


Shortly after I posted my challenge I asked “Johnny Craps,” keeper of An Old Timer’s Guide to Beating the Craps Table, if he wanted to accept my challenge. The site for said system no longer exists, which is usually the case with betting systems. The owners seem to vanish in the middle of the night.

John replied quickly and was very confident in his system and its ability to show a profit over a billion rolls. He regaled me several stories of big winnings using his system and admitted to only one substantial loss and that was because he got drunk and didn’t follow the system. Through our discussion John was the the perfect gentleman and even refused my offer of payment if his system did beat the challenge. It was through personal application and testimony of others who purchased his system that he believed in it.

His system relies on the philosophy that you are more likely to win after a previous loss. In addition, his system has controls to limit losses with the greatest pass line loss being only eight times the smallest. He bets only on the pass line and taking the odds. The fallacy lies in the assumption that a win becomes more likely after a loss. The results below bear this out.

Results ofAn Old Timer’s Guide to Beating the Craps Table

Aspect Result
Total rolls of the dice 1,000,000,006
Total pass line bets made 296,239,663
Total odds bets made 197,491,494
Total units bet 3,800,921,108
Total units lost 21,266,094
Maximum units won at any time 2,111

The ratio of units lost to units bet is 0.005595, which is not far from the house advantage in craps of 0.005720 when taking full double odds, the difference being due to random variation. The maximum units won will vary substantially from one session to another and the result of 2111 above should not be expected to be easily duplicated. Below are the maximum units won at any time based on ten different sessions of one million rolls each: 224, 2521, 1226, 1199, 1298, 6130, 3123, 224, 851, and 1314.

A copy of the program is below. I put *** symbols over certain factors which would give away his strategy. Since it is still for sale he wouldn’t want to give it away from free.

I would like to thank John for his participation and cooperation in this experiment.

# include <stream.h>
# include <stdlib.h>
# include <string.h>
# include <math.h>

int main(void)
{
int numpass, numodds, numroll, tbet, er, es, point, roll, die[2], i, n, max, bet, win, num, bil;

cerr << "enter seed ";
cin  >> n;

for (i = 1; i <= n; i++)
{
    num = rand();
}

cerr << "enter number of trials ";
cin  >> n;

numroll = 0;
bil     = 0;
win     = 0;
tbet    = 0;
max     = 0;
numpass = 0;
numodds = 0;
bil     = 0;


do              // repeat until end of experiment
{
    es  = 0;
    bet = 2;

    do          // repeat until end of series
    {
        point   = 0;
        er      = 0;

        do      // repeat until end of round
        {
            for (i = 0; i <= 1; i++)
            {
                num    = rand();    // The maximum rand() is 32767
                die[i] = 1 + int(num * 6 / 32767);
            }

            roll = die[0] + die[1];

            numroll++;

            if (point == 0)
            {
                numpass++;

                if ((roll == 7) || (roll == 11))
                {
                    win  += bet;
                    tbet += bet;
                    er    =   1;
                    es    =   1;
                }
                else if ((roll == 2) || (roll == 3) || (roll == 12))
                {
                    er    =   1;
                    win  -= bet;
                    tbet += bet;
                }
                else
                {
                    point = roll;
                    numodds++;
                }
            }
            else if (roll == point)
            {
                if ((roll == 4) || (roll == 10))
                {
                    win  += 5 * bet;
                    tbet += 3 * bet;
                }
                else if ((roll==5)||(roll==9))
                {
                    win  += 4 * bet;
                    tbet += 3 * bet;
                }
                else
                {
                    win  += 4 * bet;
                    tbet += 7 * bet / 2;
                }

                er = 1;
                es = 1;
            }
            else if (roll == 7)
            {
                if ((point == 6) || (point == 8))
                {
                    win  -= 7 * bet / 2;
                    tbet += 7 * bet / 2;
                }
                else
                {
                    win  -= 3 * bet;
                    tbet += 3 * bet;
                }

                er = 1;
            }

        } while (er == 0);  // repeat until end of round

        if (tbet > 1000000000)
        {
            bil++;
            tbet -= 1000000000;
        }

        if (win > max)
        {
            max = win;
        }

        if (es == 0)
        {
            if (bet == ***) { bet = ***; } else
            if (bet == ***) { bet = ***; } else
            if (bet == ***) { es  = ***; }
        }

    } while (es == 0);      // repeat until end of series


} while (numroll < n);   // repeat until end of experiment

cerr << "Total rolls          = " << numroll << "\n";
cerr << "Total pass line bets = " << numpass << "\n";
cerr << "Total odds bets      = " << numodds << "\n";
cerr << "Total winnings       = " << win     << "\n";
cerr << "Total bets           = " << bil     << " billion + " << tbet << "\n";
cerr << "High winnings        = " << max     << "\n";
}