最初に

ここではセガのオンラインゲーム、Phantasy Star Universeのイルミナスの野望で導入された、 カジノ・ボルワイアルで何とか勝てないかと足掻いてみようと思います。 ただしここでの内容は一般な賭け事に共通のリスクヘッジ(危機回避)です。 また他の賭け事と同じく、このルーレットも統計学的にはプレイヤーが損することになっており、 ここでの内容を用いてもその結論からは逃れられません。

賭け事で絶対負けない方法

賭け事の話になると、次のような絶対負けない方法というものが良く出ます。

この場合、やっている賭け事のルールは勝てば賭け金の倍額が戻ってくる(=賭け金+賭け金と同額の報酬がもらえる)という前提です。 この方針で賭けていくと、一回勝てばそれまでの負けがすべて回収できます。 賭け事なのだからそのうち勝てるだろう、一度勝てば今までの負けは帳消し、そして次に勝てばプラスになる、よって絶対に負けない、というものです。

一見正しいですが、統計学上ではこれが実用的に成り立つには潤沢に賭け金を持っていること、 そして「絶対」成り立つには無限大に持っていることが条件となり、 そんなに金があるなら賭け事はしないという矛盾があります。

まぁここではそれは置いておいて、この方法をボルワイアルのルーレットに当てはめるとどうなるかというお話です。

カジノ・ボルワイアルのルーレットのルール

一般にあるルーレットを簡略化したものとなっています。

0の存在があるにも関わらず配当は0抜きで損得無し(期待値が1)な値に設定されているため、長期的にはプレーヤーが絶対損をするものとなっています。 しかし巷のアメリカ式ルーレットは0と00の二つがあるので、それよりは有利。

Red or Blackで賭ける(1)

負けた合計額だけ次回に賭ける、勝ったら次回は1枚という方法です。 負けたら次回は倍額というのとは若干違いますが、それは最初だけで2連敗以降は前回の倍額と変わりありません。

連敗数 賭けコイン 負けると 勝つと
0 1 -1 1
1 1 -2 0
2 2 -4 0
3 4 -8 0
4 8 -16 0
5 16 -32 0
6 32 -64 0
7 64 -128 0
8 128 -256 0
9 256 -512 0
10 512 -1024 0
11 1024 -2048 0
12 2048 -4096 0
13 4096 -8192 0
14 8192 -16384 0
15 16384 -32768 0
16 32768 -65536 0
17 65536 -131072 0
18 131072 -262144 0
19 262144 -524288 0
20 524288 -1048576 0

何枚賭けましょうか?

100枚コインを持っていたとします。賭けるのはRed or Blackです。何枚賭けますか? 5枚? 10枚? 今回の方法ではそんなにたくさん賭けたら、すぐ行き詰まるでしょう。 なぜなら、負けたら倍額賭けないといけないのです。その賭け金が無ければ今までの負けを取り返す手段が無くなり、大損となるのです。 この方法の正体は、損をする確率を減らす代わりに低確率で大損します。

上の表の見方ですが、すでに6連敗したとします。 表の連敗数6のところを見ます。次に賭けなければいけないコインは32枚です。 そして「負ければ」のところに-64とあるので、負けて7連敗となると合計64枚コインを失うことになります。 逆にいえば最初に64枚以上コインを持ってなければ、5連敗した時点で次にそれを取り戻すためのコインが足りず、大損となります。

手持ち64枚で5連敗まで耐えられるのは、最初に賭けたのが1枚の場合。 最初に5枚賭けた場合は、後の賭ける枚数も5倍にしないといけません。 そうなると最初の持ちコイン100枚では、4連敗までしか耐えられません。 5連敗すると次に取り返すだけの持ちコインが無いので大損、16×5=80枚負けることとなります。

そんなに負けるわけない?

え? 赤か黒かの勝負だから、ずっとどちらかに賭けつづければ、5連敗も6連敗もしないだろって? 私このルーレット初めてまだ1週間ですが、すでに2回8連続黒とか赤を見てます(つд`)

では連敗する確率がいくらくらいあるのか、というのが下の表です。 100,300,1000回というのがルーレットを回した回数、 2連敗・3連敗とあるのが、それだけルーレットを回した時に「最低一回」n連敗「以上」する確率です。 例えば100回-5連敗は84.577%ですが、運の悪い人はこの後も連敗記録を伸ばしたり、5連敗を2回以上喰らったりします。

たかが赤か黒かを当てるだけなのに、100回ルーレット回して9連敗する確率が10%以上。 言い換えれば100回ルーレットを回せば、10人に1人以上が9連敗以上を経験します。 さらに68人に1人程度が12連敗、たかが100回ルーレット回しただけで。 さすがに16連敗までするのは1000人に1人程度ですが、この不幸な方は32,768枚のコインを失います。

別の見方。上の表から10連敗に耐えるためには1024枚のコインが必要ですが、 それをこの方法で稼ぎ出すためには1024回以上勝たなければいけない、 つまり最低1024回はルーレットを回すこととなります。 しかし半数弱(46.973%)の人がその前に10連敗を経験して撃沈します。 うん、割に合わないw

ちなみにプレーヤーが赤・黒をどういう順番で賭けるかは関係ありません。 ずっと同じ所に賭けても、交互でも、複雑に変更しても確率は同じです。不思議に思えるかもしれませんが。

連敗数 100回 300回 1000回
2 99.999% 99.999% 99.999%
3 99.986% 99.999% 99.999%
4 98.103% 99.999% 99.999%
5 84.577% 99.676% 99.999%
6 59.727% 93.962% 99.992%
7 36.274% 75.339% 99.111%
8 20.196% 50.626% 90.803%
9 10.743% 30.097% 70.284%
10 5.584% 16.667% 46.172%
11 2.868% 8.885% 27.155%
12 1.465% 4.643% 14.979%
13 0.746% 2.401% 7.980%
14 0.379% 1.235% 4.175%
15 0.193% 0.634% 2.163%
16 0.098% 0.325% 1.115%
17 0.050% 0.166% 0.574%
18 0.025% 0.085% 0.295%
19 0.013% 0.044% 0.151%
20 0.006% 0.022% 0.078%

実に地道な儲け

実際にこの方法を始めると、コインは減りはしないものの、なかなか増えないと感じると思います。 なぜなら一度負けると次から負けを取り戻すための勝負になり、連敗脱出で初めて元に戻るのです。 コインを増やすためには連勝が条件で、連勝しても毎回得られるコインはたった1枚です。

しかし大損しないようにコインはたくさん持ち、ちびちび賭けないといけません。 1000枚のコインを持った状態で一枚一枚稼ぐとか。 それでも100回ルーレット回せば5.584%の人が10連敗で撃沈の危機があります ^^;。

Red or Blackで賭ける(2)

連勝しないとコインが増えないというのは、いくらなんでも時間がかかりすぎる。 負けた時に次に賭けるコインを(連敗で負けた総額+1)で賭けます。 これをやると何が変わるか? 連勝しなくても勝てばコインが1枚手に入るようになります。

連敗数 賭けコイン 負けると 勝つと
0 1 -1 1
1 2 -3 1
2 4 -7 1
3 8 -15 1
4 16 -31 1
5 32 -63 1
6 64 -127 1
7 128 -255 1
8 256 -511 1
9 512 -1023 1
10 1024 -2047 1
11 2048 -4095 1
12 4096 -8191 1
13 8192 -16383 1
14 16384 -32767 1
15 32768 -65535 1
16 65536 -131071 1
17 131072 -262143 1
18 262144 -524287 1
19 524288 -1048575 1
20 1048576 -2097151 1

早く儲かるが大損確率も増える

が、世の中そんなに甘くありません。よく見ると負けた後に賭けるコインが倍になっているのが分かります。 これ即ち耐え凌げる連敗回数が1回減り、大損する確率が増えることになります。 連敗数が少なければ手早く(倍速?)コインを増やせるので、上のよりちょっとハイリスク・ハイリターン。

3分割に賭ける (1)

賭ける方針はそのままで、賭ける所を1~12/13~24/25~36の3分割にします。当たる確率12/37=32.43%。配当3倍。

連敗数 賭けコイン 負けると 勝つと
0 1 -1 2
1 1 -2 1
2 2 -4 2
3 4 -8 4
4 8 -16 8
5 16 -32 16
6 32 -64 32
7 64 -128 64
8 128 -256 128
9 256 -512 256
10 512 -1024 512
11 1024 -2048 1024
12 2048 -4096 2048
13 4096 -8192 4096
14 8192 -16384 8192
15 16384 -32768 16384
16 32768 -65536 32768
17 65536 -131072 65536
18 131072 -262144 131072
19 262144 -524288 262144
20 524288 -1048576 524288

ハイリターン!

この方法はなんと言っても、勝った時に得るコインが大きいこと。 しかも連敗すればするほどそれを脱出した時に大量のコインが手に入ります。 実際この方法は、上二つに比べればコインが増えやすく、4時間で200枚のコインを500枚弱にできたこともあります。

ハイリスク!

やっぱり世の中そんなに甘くない。この方法だと、賭ける金額は今までと一緒、連敗するほど報酬は多くなる。 何がリスクなのか? 連敗しやすいのです。計算上100回ルーレット回して約半数の人が10連敗以上します。 1%の人はなんと100回のルーレットの間に20連敗以上するのです。悪夢ですね。

実際4時間程度やってみた時は5連敗32枚賭けなんて幾度もあり、引きつりながら6連敗64枚賭けもやりました。 結局プレイ開始4時間後に10連敗して持ちコインが尽き、512枚大損いたしました。 その後も負け、最終的には12連敗いたしております(つдT)。 実を言うと、この文章を書きながらプレイしていたので3回ほどコインを賭けるタイミングを逃し、 結局これが負け勝負で幸運にも大損を回避したのが2回ほどあります。 つまり、4時間で3回大損の危機がやってきてたわけですね。

Red or Blackで手持ちコイン1024枚10連敗程度の安全性を確保しようとすると、こちらでは16連敗65,536枚以上必要です。 実に64倍以上のコインが必要。ならばRed or Blackで50枚・60枚と賭けているほうが・・・ねぇw

連敗数 100回 300回 1000回
2 99.999% 99.999% 99.999%
3 99.999% 99.999% 99.999%
4 99.998% 99.999% 99.999%
5 99.825% 99.999% 99.999%
6 97.874% 99.999% 99.999%
7 90.945% 99.941% 99.999%
8 78.291% 99.144% 99.999%
9 62.649% 95.445% 99.997%
10 47.335% 86.795% 99.896%
11 34.327% 73.730% 98.936%
12 24.206% 58.823% 95.133%
13 16.753% 44.638% 86.721%
14 11.452% 32.641% 74.138%
15 7.765% 23.249% 59.658%
16 5.237% 16.261% 45.681%
17 3.520% 11.233% 33.685%
18 2.360% 7.694% 24.170%
19 1.580% 5.240% 17.012%
20 1.057% 3.556% 11.815%

3分割に賭ける (2)

3分割は連敗しやすいので、連敗に強くすること考えます。 もちろん儲けは減らさざるを得ません。

上の確率計算から、いくら3分割とはいえ100回プレイして20連敗するのは100人に1人、 1000回でも8~9人に1人です。これになってしまったら不幸と諦めて、 20連敗まで耐えることを目安に、賭ける金額を決めます。 一回で負けを取り返した上に何10枚、何100枚も儲けなくてもいい、 勝ったときにちょっと儲かればいい、そういう考え方です。

この計算は勝ったときにいくら儲けたいかで賭けるコイン数が変わる上に、 前回の倍というような単純なものではありません。 そこで計算するツールを作ってみました。 賭ける種類(赤黒や一点賭けも選択可能)と勝った時に最低儲けたいコイン数(損しなければ良いなら0)をいれて計算させると、 連敗数に応じた賭けるコイン数が表示されます。

まぁ、20連敗にも耐えるとなるとそれなりにコインは必要ですけどね^^;

PSU カジノ・ボルワイアル ルーレット賭けコイン計算ツール

参考

100回ルーレット回す間に何連敗する確率が何%という計算は このページ を参考にしました。

例えばC言語でこの確率を計算する場合、

をいれて以下の再帰関数を呼び出せば得られますが、 jが大きくなると非常に時間がかかります (具体的にはP(19/37, 2, 0, 100)が2GHzのCPUで丸一日かけても終わらない)。 実用的時間で計算するコードはこちら

double P(double p, int n, int i, int j)
{
  if( n<=i ){
    return 1.0;
  } else if( n-i>j ) {
    return 0.0;
  } else {
    return p*P(p,n,i+1,j-1) + (1-p)*P(p,n,0,j-1);
  }
}