在這一頁
「約翰尼克拉普斯」挑戰
簡介
在我發布挑戰後不久,我問了“Johnny Craps” (老玩家指南:如何在賭桌上獲勝)的管理員,他是否願意接受我的挑戰。這個系統的網站已經不存在了,博彩系統通常都是這樣。它的所有者似乎半夜就消失了。
約翰回覆很快,對他的系統及其在十億輪次中盈利的能力非常有信心。他向我講述了幾個使用他的系統贏取巨額利潤的故事,並承認只輸過一次大錢,那是因為他喝醉了,沒有按照系統操作。在我們的討論中,約翰表現得非常紳士,甚至拒絕了我提出的如果他的系統成功挑戰就付款的提議。正是透過他個人的應用以及其他購買他系統的人的見證,他才真正相信了它。
他的系統基於這樣的理念:輸一次之後贏的可能性會更大。此外,他的系統也設定了限制損失的控制措施,最大輸贏線(pass line)僅為最小輸贏線(pass line)的八倍。他只投注pass line,並接受賠率。其謬誤在於他假設輸一次之後贏的可能性會更大。以下結果證實了這一點。
《老玩家指南:如何在擲骰子遊戲中獲勝》的結果
| 方面 | 結果 |
|---|---|
| 擲骰子總數 | 1,000,000,006 |
| 投注過線總數 | 296,239,663 |
| 總賠率投注 | 197,491,494 |
| 投注總單位 | 3,800,921,108 |
| 損失單位總數 | 21,266,094 |
| 任何時間贏得的最大單位數 | 2,111 |
輸掉的單位數與投注單位數之比為 0.005595,這與擲骰子遊戲中採用全雙倍賠率時的莊家優勢 0.005720 相差無幾,差異源於隨機變化。每次遊戲的最大贏取單位數差異很大,上述 2111 的結果不應指望輕易複製。以下是基於十個不同遊戲(每次遊戲一百萬次)中任意時刻的最大贏取單位數:224、2521、1226、1199、1298、6130、3123、224、851 和 1314。
下面是該程式的副本。我在某些會洩漏他策略的因素上標註了***符號。由於該程式仍在出售,他肯定不想免費贈送。
我要感謝約翰對這次實驗的參與與合作。
# 包括 <stream.h>
# 包括 <stdlib.h>
# 包含 <string.h>
# 包括 <math.h>
int main(空)
{
int numpass、numodds、numroll、tbet、er、es、point、roll、die[2]、i、n、max、bet、win、num、bil;
cerr << "輸入種子";
cin >> n;
對於(i = 1;i <= n;i++)
{
num = rand();
}
cerr << "輸入試驗次數";
cin >> n;
滾動數量 = 0;
比爾=0;
勝利=0;
tbet = 0;
最大值=0;
numpass = 0;
numodds = 0;
比爾=0;
do //重複直到實驗結束
{
es = 0;
賭注=2;
do // 重複直到系列結束
{
點=0;
呃= 0;
//重複直到回合結束
{
對於(i = 0;i <= 1;i++)
{
num = rand(); // rand() 的最大值為 32767
die[i] = 1 + int(num * 6 / 32767);
}
滾動 = 骰子[0] + 骰子[1];
數字滾動++;
如果(點==0)
{
數位傳遞++;
如果((roll == 7)||(roll == 11))
{
贏+=賭注;
tbet += 賭注;
呃= 1;
es = 1;
}
否則,若((roll == 2)||(roll == 3)||(roll == 12))
{
呃= 1;
贏-=賭注;
tbet += 賭注;
}
別的
{
點 = 滾動;
numodds++;
}
}
否則,如果(roll == point)
{
如果((roll == 4)||(roll == 10))
{
贏 += 5 * 賭注;
tbet += 3 * 賭注;
}
否則,如果((roll==5)||(roll==9))
{
贏 += 4 * 賭注;
tbet += 3 * 賭注;
}
別的
{
贏 += 4 * 賭注;
tbet += 7 * 賭注 / 2;
}
呃= 1;
es = 1;
}
否則,若(roll == 7)
{
如果((點 == 6)||(點 == 8))
{
贏 -= 7 * 賭注 / 2;
tbet += 7 * 賭注 / 2;
}
別的
{
贏 -= 3 * 賭注;
tbet += 3 * 賭注;
}
呃= 1;
}
} while (er == 0); //重複直到回合結束
如果(tbet>1000000000)
{
比爾++;
tbet-= 1000000000;
}
如果(勝利>最大)
{
最大=勝利;
}
如果(es == 0)
{
如果 (賭注 == ***) { 賭注 = ***; } 其他
如果 (賭注 == ***) { 賭注 = ***; } 其他
如果 (bet == ***) { es = ***; }
}
} while (es == 0); // 重複直到系列結束
} while (numroll < n); //重複直到實驗結束
cerr << "總擲骰數 = " << numroll << "\n";
cerr << "總透過線投注 = " << numpass << "\n";
cerr << "總賠率投注 = " << numodds << "\n";
cerr << "總獎金 = " << win << "\n";
cerr << "總投注 = " << bil << " 十億 + " << tbet << "\n";
cerr << "高額獎金 = " << max << "\n";
}