WOO logo

このページ

「ジョニー・クラップス」チャレンジ

概要

挑戦状を投稿して間もなく、「 An Old Timer's Guide to Beating the Craps Table(クラップステーブルを攻略するためのベテランガイド)」の運営者である「Johnny Craps」さんに、私の挑戦を受けてくれるかどうか尋ねてみました。そのシステムのサイトはもう存在しません。賭けシステムではよくあることです。運営者は夜中に姿を消すことが多いようです。

ジョンはすぐに返信し、自分のシステムと、10億回以上のロールで利益を出せることに強い自信を持っていました。彼は自分のシステムを使って大勝ちしたという話を何度も聞かせてくれました。そして、一度だけ大きな損失を出したことを認め、それは酔っ払ってシステムの使い方を間違えたためだと教えてくれました。話し合いを通して、ジョンはまさに紳士的な対応を見せてくれました。もし彼のシステムがチャレンジに勝てたら報酬を支払うという私の申し出さえも断ってくれました。彼がそのシステムを信頼していたのは、自身の実践と、彼のシステムを購入した他の人たちからの証言があったからです。

彼のシステムは、前回の負けの後の方が勝つ可能性が高くなるという哲学に基づいています。さらに、彼のシステムには損失を制限するための制御機能があり、パスラインでの最大の損失は最小の損失の8倍に過ぎません。彼はパスラインにのみ賭け、オッズを取ります。この誤謬は、負けた後に勝つ可能性が高くなるという仮定にあります。以下の結果はこれを裏付けています。

クラップステーブルに勝つためのベテランガイドの結果

側面結果
サイコロの合計出目1,000,000,006
パスラインベットの合計2億9623万9663円
合計オッズベット1億9749万1494円
合計ユニットベット3,800,921,108
失われたユニットの総数21,266,094
いつでも獲得できる最大ユニット数2,111

賭けたユニット数に対する損失ユニット数の比率は0.005595で、これはクラップスのフルダブルオッズにおけるハウスアドバンテージ0.005720とそれほど変わりません。この差はランダムな変動によるものです。最大獲得ユニット数はセッションごとに大きく異なり、上記の2111という結果が容易に再現されるとは期待できません。以下は、100万回ロールした10回の異なるセッションに基づく、任意の時点での最大獲得ユニット数です:224、2521、1226、1199、1298、6130、3123、224、851、1314。

プログラムのコピーを以下に示します。彼の戦略が明らかになる可能性のある要素には***記号を付けました。プログラムはまだ販売中なので、彼は無料で配布したくないでしょう。

この実験に参加し協力してくれたジョンに感謝します。

# <stream.h> をインクルードする
# <stdlib.h> をインクルードする
# <string.h> をインクルードする
# <math.h> をインクルードする

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

cerr << "シードを入力 ";
シン >> n;

(i = 1; i <= n; i++) の場合
{
    数値 = rand();
}

cerr << "試行回数を入力してください ";
シン >> n;

numroll = 0;
ビル = 0;
勝利 = 0;
tbet = 0;
最大 = 0;
パス番号 = 0;
numodds = 0;
ビル = 0;


do // 実験終了まで繰り返す
{
    es = 0;
    賭け = 2;

    do // シリーズの最後まで繰り返す
    {
        ポイント = 0;
        er = 0;

        do // ラウンド終了まで繰り返す
        {
            (i = 0; i <= 1; i++) の場合
            {
                num = rand(); // rand()の最大値は32767です
                die[i] = 1 + int(num * 6 / 32767);
            }

            ロール = ダイス[0] + ダイス[1];

            numroll++;

            もし (ポイント == 0)
            {
                numpass++;

                もし ((ロール == 7) || (ロール == 11))
                {
                    勝利 += 賭け金;
                    tbet += 賭け金;
                    er = 1;
                    es = 1;
                }
                そうでない場合 ((ロール == 2) || (ロール == 3) || (ロール == 12))
                {
                    er = 1;
                    勝つ -= 賭ける;
                    tbet += 賭け金;
                }
                それ以外
                {
                    ポイント = ロール;
                    numodds++;
                }
            }
            そうでない場合 (ロール == ポイント)
            {
                もし ((ロール == 4) || (ロール == 10))
                {
                    勝利 += 5 * 賭け金;
                    tbet += 3 * 賭け金;
                }
                そうでない場合 ((ロール==5)||(ロール==9))
                {
                    勝利 += 4 * 賭け金;
                    tbet += 3 * 賭け金;
                }
                それ以外
                {
                    勝利 += 4 * 賭け金;
                    tbet += 7 * 賭け金 / 2;
                }

                er = 1;
                es = 1;
            }
            そうでない場合 (ロール == 7)
            {
                if ((ポイント == 6) || (ポイント == 8))
                {
                    勝ち -= 7 * 賭け金 / 2;
                    tbet += 7 * 賭け金 / 2;
                }
                それ以外
                {
                    勝ち -= 3 * 賭け金;
                    tbet += 3 * 賭け金;
                }

                er = 1;
            }

        } while (er == 0); // ラウンド終了まで繰り返す

        (tbet > 1000000000)の場合
        {
            ビル++;
            tbet -= 1000000000;
        }

        もし(勝利>最大)
        {
            最大 = 勝利;
        }

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

    } while (es == 0); // シリーズの最後まで繰り返す


} while (numroll < n); // 実験終了まで繰り返す

cerr << "合計ロール数 = " << numroll << "\n";
cerr << "パスラインベットの合計 = " << numpass << "\n";
cerr << "合計オッズ ベット = " << numodds << "\n";
cerr << "合計賞金 = " << win << "\n";
cerr << "総ベット = " << bil << " 10 億 + " << tbet << "\n";
cerr << "高額賞金 = " << max << "\n";
}