ちりめんじゃこの命

仮想のアドレナリン

アホの考えたギャンブル必勝法3選

 

 筆者はギャンブルの攻略法について調べたことがあるのだけど、それらがあまりにも数学的に破綻しているのに関わらず、ギャンブル攻略法のアホさを指摘したブログ等は(日本語圏内で、筆者の調べた限りでは)全くなくて驚いたことがある。

 そこで今回は、「これ、アホやな~」と思ったギャンブル攻略法を3つ、紹介していこう。

 

前提:当記事では、2倍配当のゲームのみを扱っている。2倍配当とは、ギャンブルゲームにおける「1/2の確率で勝てば賭け金が倍になって戻ってくるが、負ければ賭け金が戻ってこない」というルールのことだ。丁半博奕、ルーレット、バカラ等……

 

 

 

1.10%法

 ギャンブルの賭け方で、考えられる限り最もアホな賭け方は「常に全額BETし、これを無限回繰り返す」という賭け方だと思ってよいが、10%法はその次にアホな賭け方だと言ってよい。効率よく損をしたい際に使える。

 

やりかた

 常に残高(手持ちの金)の10%をBETし続ける。

 

 実にシンプルな賭け方だ。勝ちが込んでる時は勝ち幅が加速し、負けが込んでる時は負け幅が減速するということで有名だ。

 

だめな理由

 場合分けして考えると、勝った場合は残高が11/10になり、負けた場合は残高が9/10になる。つまり、勝ったあと負けたら、残高が99/100になる。勝ち負けが同数であれば必ず損をするのだ。

 

  シミュレーターで試してみると、なんとなく損をしているのが読者氏にも体感して貰えると思う。

 

 当然のように、10%という数字にも数学的根拠がない。どうせ長期的には不利になるのだから、10%より、100%BETして1回勝ったら辞めるような、短期戦で勝負する人の方が賢いとすら思える。

 

ギャンブル攻略法、もれなくアホ

 2倍配当のゲームには、たくさんの攻略法が存在する。マーチンゲール法、ウィナーズ法、パーレー法、グランパーレー法、モンテカルロ法、ココモ法、ダランベール法、パーセントベット法、オスカーズグラインド法、ワンハーフアップ法、and more...

 

 そのどれもが、「おれはこう賭けるのが好きだぜ」というマイルーチンを紹介しているだけに過ぎないのに関わらず、さも数学的根拠があるかのように持て囃され、共有されている。

 どんな賭け方をしても、一長一短あるので、利益の期待値は0なのに。

 

(10%法は、利益の期待値が0を下回るという、世にも珍しい賭け方だ)

 

 

 当記事を書くにあたって、たくさんのギャンブル攻略法の記事を巡回したけど、どれも本当にひどいものだった。中でも多かったのは「この攻略法が本当に正しいのか、検証しました!」と言って100回くらい実践してみている記事。

 

 

 

 

 

 

 

 

 

 

 

いや試行回数少ないって!!!!!

 

 

 

100回て!!!!!!!!!!

 

 

 

 

短期的には運よく儲かるかもしれないのが

 

 

 

 

ギャンブルなんと、ちゃうんか!!!!!!!!

 

 

 

 

 

ワレ!!!!!!!

 

 

 

 ひどい所だと、試行回数8回だったりもした。

 

 シミュレーションができるサイトもあるくらいなのだから、せめて1万回くらいはシミュレートして欲しいと思うのだけど……

 

 このシミュレータがあるおかげで、現実世界で破産することなく、シミュレーション上で何度も破産できるので、ギャンブルに手を出したい人は、一度シミュレータを回してみると良い。

 

2.空回し

(前提:当記事では、表裏をoとxで表現することがあります)

空回しとは

 2倍配当のゲームにおいて、「xが続くほど、次もxが出る確率というのは下がっていくのだから、xが3回続いたのを見届けてからoに賭ければ勝ちやすくなる」という考え方である。

画像引用元:https://vegasdocs.com/blog/martingale-kakuritsu.html

 

 でもね、これは誤りだよ。

 

 今からコインを10回投げるとして、結果がxxxxxxxxxxになる可能性は1/1024と極めて低い。

 しかし、oooxoxoxxxになる可能性も、xoxxxoooxoになる可能性も、その他全ての歯切れの悪い結果になる可能性も、全て等しく1/1024の確率で発生するのだ。

 結局の所、コイントスを10回した際の、考えられる全ての結果というのは等しく1/1024でしか発生しない珍しい結果なのだけど、人間が勝手に「10連続でxが出ていること」だけに意味を見出してフォーカスするから、それだけ珍しく見えるのだ。

 

 空回しの話に戻ろう。確かにxxxxが起こる可能性は6.25%だ。そこは合ってる。しかし、だからといって、xxxoが起こる可能性が93.75%になるわけではない。xxxoが発生する確率も6.25%だ。何回連続でxが出ても、次にxが出る確率とoが出る確率は等しい。

 

人、哀しい生き物

 丁半博奕、ルーレット、バカラコイントス、その他あらゆる「直前にやったゲームの文脈を引き継がないゲーム」において、なぜ人は文脈を見出してしまうのか。

 

 いまカジノで100万円持ってるオッサンがいたとして、その人の過去の情報である

・いまカジノに来たばかりなのか

・カジノに来てから50万円儲けている人なのか

・カジノに来てから50万円損している人なのか

・それまでどんな賭け方をしてきたのか

 といった文脈が、次にどう賭けるかという意思決定に関わってくるだろうか? 答えは否である。

 

 オッサンが自身のことを、それまでの文脈を引き継がないオッサン、プレーンオッサンだと考えても、オッサンのパフォーマンスは変わらない。

 

 

3.マーチンゲール法

 全てのカジノ攻略法はアホなので全部指摘したい所だけど、代表してマーチンゲール法が間違っていることだけ指摘しよう。

 

やりかた

 最初に1ユニットを賭ける。ユニットという知らない単位が出てきたが、これには任意の金額を代入していい。例えば、1ユニット=1000円だと考えて良い。

 

 とにかく1ユニットを賭ける。そして負けたら2ユニットを賭ける。それでも負けたら4ユニット賭ける……こうして負ける度に賭け金を倍々にしていくのだ。

 そして、勝ったら賭け金をまた1ユニットに戻す。

 何連敗したとしても、最終的に1勝さえすれば絶対に1ユニットの得になるという賭け方だ。これを繰り返せば、安定して無限に1ユニットずつ儲けられ続ける。

 

 これを使えば、例え10回勝負をした結果が「負負負負負負負負」くらい悲惨な結果だったとしても、2ユニット儲かっているのだ。

 

 これはカジノ攻略法の中でも最も有名な攻略法と言っていい。初めて知る人は感銘を受けることだろう。

 

 なぜそんなに代表的な方法を記事の最後に持ってきたかというと、そのアホさの解説をしていると算数の時間になってしまって、あまり面白い話にならないからだ。以降、つまらないと思ったら読み飛ばすよろし。

 

儲けの期待値

 マーチンゲール法において、掛け金1ユニットからスタートした場合、2つの着地点がある。

 

 1/2^nの確率で2^n-1ユニットの大損をして、トボトボと足を引きずりながら猫背で帰るか、1ユニットの得をするかだ。ここで言うnとは、これ以上マーチンゲール法が継続できなくなるような最大連敗回数を指す。

 

 例えば、現在の所持金が1000ユニットだった場合は9連敗までできる。1/512の確率で9連敗して、511ユニットの損をして、トボトボと足を引きずりながら猫背で帰ることになるか、あるいは残りの511/512の確率で1ユニットを得ることができる。

 得する期待値と損する期待値を合わせて考えると、儲けの期待値が出せる。

 

 という、いま自然言語で説明した「儲けの期待値E」の算出方法を、数式で言うとこうなる

 

E=( (1-1/2^n)*1 ) - (1/2^n*(2^n-1))

 

 驚くべきことにこの数式、見た目は煩雑だが、解くとE=0になる。

 つまり、儲かるかどうかで言えばプラマイゼロ。

 

 ネット掲示板風に言うとこうである。

 

スレタイ:1/512の確率で511万円を失うけど、511/512の確率で1万円貰えるボタン

 

1: 押す?

 

2:期待値ゼロやろハゲ

 

 

 マーチンゲール法について解説しているネット記事は、よく「これは安定して1ユニットずつ儲けられるけど、低確率で破産するから引き際の見極めに注意!」という説明をしているが、無を述べているに過ぎない。普通に賭けるのとなんら変わらない。

 乱数を発生させている神から見ると、ただ人間が無意味に大きく出たり小さく出たりしているだけに見える。

 

 

 ところで、本当にマーチンゲール法は期待値がゼロなのか、Python上でモンテカルロ法を使ってシミュレーションしてみた。

クリックで豆知識 ちなみに数学やプログラミングで言うモンテカルロ法は、乱数などを使ったシミュレーションによって理論が正しいしいかどうか確かめる手法のことを指すのだけど、ギャンブルの賭け金を賭ける方法であるモンテカルロ法は全く意味が異なる。どちらもカジノで有名な国家モナコ公国の地名「モンテカルロから名前が取られている。まぎらわしい。

 

 ここ以降はマジで冗長的になってくるので、算数が好きな人だけ読んで下さい

 

マーチンゲール法が本当に正しいのかのシミュレーション

 5000人に、マーチンゲール法を使って、2倍配当のゲームをそれぞれ2000回して貰う(つまり、合計で1000万回のゲームを試行している)ようなコードを書いた結果、最終的にその人々の儲けの平均は+990.129ユニットとなった。これは何度試してもその付近の値になる。

クリックでコードの表示
from random import randrange as r

#N回ゲームを試行してくれる人を、M人用意する。
M=5000
N=2000
sum=0

for j in range(M):
 zandaka=0 #0円スタート。借金を受け付ける
 bet=1 #掛け金は1ユニットスタート
 for i in range(N):
  a=r(2)
  if a==1: #勝ちの場合
   zandaka+=bet
   bet=1
  else: #負けの場合
   zandaka-=bet
   bet*=2
 sum+=zandaka
 print(str(int(j+1)) + "人目 : " +str(zandaka))

print("平均 : " + str(sum/M) + "円")

いいかい、客観性に欠けるカジノ攻略記事を書いている世のライターさん、検証っていうのは、こうやってやるんだよ。


 ゲームを2000回やった結果が約+990ユニットというのは頷ける。

 

 勝ちと負けが同数なら2ゲームに1ユニット儲けるはずなので、1000ユニットくらい儲かりそうに思える。でも、負けが込んだまま2000回目を迎える人もいるから、1000ユニットよりは少し低い。


 

 

 

 

 

 

でもさ、儲かってるのおかしくない!? さっきの数式は期待値ゼロって言ってたんだから、シミュレーション上でも儲けが±0ユニットに近づかないとおかしくない!?

 

 

 

ダメなんだよ、「ギャンブルで儲かる方法はある」という結論に着地したらさ。

 

 

 

意地でも、認めない。

 

 

 

 

 

 

 しかし、頭を捻りながら夜更かししていたら謎は解けた。このコードでは破産を実装していないので、無限の借金を認めている。「2000回目で終わった際にちょうど12連敗してる最中で、残高がマイナスだった」みたいなケースが滅多に発生しないために、プラスになってしまったのだ。

 

 ダメなんだよ。カジノに必勝法はないんだから。しっかり論駁しておかないと。

 

 

 破産を実装しました。100ユニットを持った人1万人に、それぞれ2000回ゲームして貰うようなコードを書いた結果、その人々の儲けの平均は+104.2183ユニットとなった。これは何度試しても100ユニット前後の値になる。

クリックでコードの表示
from random import randrange as r

M=10000
N=2000
shoki=100
sum=0

for j in range(M):
 zandaka=shoki
 bet=1
 for i in range(N):
  a=r(2)
  if a==1:
   zandaka+=bet
   bet=1
  else:
   zandaka-=bet
   if zandaka <= 0:
    break
   bet*=2
 sum+=zandaka
 print(str(int(j+1)) + "人目 : " +str(zandaka))

print(sum/M)

 



・ちなみに、所持金を100ユニットでなく1億ユニットにして実行した結果、結果は+990ユニットくらいの得になることが多くなってきました。破産する確率が十分に低く、破産する人が出てこなくなったためです。

 

結論:マーチンゲール法を使う場合は、1億円を用意した状態で、1円を賭けるゲームを2000回繰り返せば、ほぼ破産のリスクなく、安定して990円くらい儲けられる!




 

 

 

目次

 

著者:いーぬぬま

ブルボン しゃりもにグミ