イーストコーストプログレッション法の検証(c++/c言語)

  • このエントリーをはてなブックマークに追加

スポンサーリンク

※サイト運営にサーバーは必須です※
~このサイトもエックスサーバーを使用しています~

目次

はじめに

※目次用の記事:ギャンブルの賭け方の種類をまとめてみた

この記事では、イーストコーストプログレッション法の紹介と、そのシミュレーション結果を示す

イーストコーストプログレッション法とは

連勝した時に、賭け金額を増やしていく手法

最小の賭け金額(例えば1)を自分で設定しておく

勝負の最初の賭け金額は1とする

勝った(連勝)場合:
1回目の賭け金額:1
勝てば、トータルで、1(元手)+1(利益)

2回目の賭け金額:1
勝てば、トータルで、1(元手)+2(利益)

3回目の賭け金額:3

※これまで出た利益2を元手の1に加えると考える
勝てば、トータルで、3(元手)+3(利益)

4回目の賭け金額:4.5

※3回目で出た利益である3を半分にして1.5を元手に、残りの1.5はプールする
勝てば、トータルで、4.5(元手)+4.5(利益)
次の元手は、4.5+2.25。残りの2.25はプールする

5回目の賭け金額:6.75
勝てば、トータルで、6.75(元手)+6.75(利益)

負けた場合:
賭け金額を最初の1に戻す。

イーストコーストプログレッション法の具体例

ルールだけ、説明してもイメージがつかめないと思うので、具体例を挙げる。

勝敗 賭け金 累計賭け金 最終利益
× 1 1 -1
○× 1 2 0
○○× 3 5 -1
○○○× 4.5 9.5 0.5
○○○○× 6.75 16.25 2.75
○○○○○× 10.125 26.375 6.125

イーストコーストプログレッション法の特徴

連勝した時に利益を出す手法

やっていることはなんだか難しい感じがするが、実質的には、1.5倍のパーレー法(アンチマーチンゲール法)とほぼ等しい。プールしている0.5倍分が利益になると考えることができる。

プールする割合は、利益の半分(50%)がスタンダードな手法だが、好みによって、プールする割合を変えても問題はない。

※下で紹介するプログラムのrate_poolに相当する

イーストコーストプログレッション法の実践する際の問題

具体例を見ればわかるが、小数点が出てくる。そのため、実際には小数点部分をどう扱うかが問題になる。プログラムの関係上、四捨五入や切り上げを実装するのはめんどくさい。そのため、得た利益を半分にして切り捨てた値をプールする金額に採用する。残った金額を賭ける金額の元手に繰り込む。

イーストコーストプログレッション法の検証

以下では2種類のプログラムを紹介する。

言語はC++で作ったがC言語としてコンパイルしても動くと思う

※このプログラムを組んだ人間は、大学時代に少しプログラムをかじった程度の戦闘能力しかない

イーストコーストプログレッション法の個別シミュレーション

 

※マーチンゲール法(2倍賭け)の破綻までのシミュレーションで紹介したプログラムと同じ変数の置き方をしている

i_max:勝負の回数
w:賭けたお金の戻る倍率を指定。ここでは2倍を指定
p:勝率を指定。ここでは1/2の確率なので50を指定。

m_min:かけ金を指定
m_ini:最初の資金を指定

r:乱数(0~100の乱数)

※乱数rが勝率pより下の数で収まるなら勝ちの判定がでる。

そして、勝負を続けていくうちに、負け続けることもあるだろう。
そしてついに、賭けしようにも手持ちのお金が足りなくなるかもしれない。
この場合、これ以上勝負ができなくなり、プログラムは終了する。(破綻判定)

つまり、借金はNG

c:トータルの勝ち負けの差がどのくらいあるか調べる用

※他の賭け方をシミュレーションした時はいつも、賭ける金額が1で、手持ちの軍資金を1000のスタートを採用していた。今回は、小数点の切り捨ての問題を考慮して、賭ける金額を10で軍資金を10000でスタートする。

その他の変数

pool:プールしている合計金額。一度負けるとリセットされる
pool_rate:半々の0.5を採用。数字を大きくすればするほどプールされる割合が大きくなる

実際にプログラムを走らせると以下のような結果となる
勝負回数i_maxは100000(10万回)までとする

#倍率は2.000000 勝率は50.000000 最小の賭け金は1.000000 手持ちのお金は10000.000000
1回目 賭け金は10.000000 win poolは0 勝敗差1 手持ちのお金は10010.000000
2回目 賭け金は10.000000 win poolは0 勝敗差2 手持ちのお金は10020.000000
3回目 賭け金は30.000000 lose poolは0 勝敗差1 手持ちのお金は9990.000000
4回目 賭け金は10.000000 lose poolは0 勝敗差0 手持ちのお金は9980.000000
(省略)
724回目 賭け金は10.000000 lose poolは0 勝敗差-38 手持ちのお金は9269.000000
725回目 賭け金は10.000000 win poolは0 勝敗差-37 手持ちのお金は9279.000000
726回目 賭け金は10.000000 win poolは0 勝敗差-36 手持ちのお金は9289.000000
727回目 賭け金は30.000000 win poolは15 勝敗差-35 手持ちのお金は9319.000000
728回目 賭け金は45.000000 win poolは22 勝敗差-34 手持ちのお金は9364.000000
729回目 賭け金は68.000000 win poolは34 勝敗差-33 手持ちのお金は9432.000000
730回目 賭け金は102.000000 win poolは51 勝敗差-32 手持ちのお金は9534.000000
731回目 賭け金は153.000000 win poolは76 勝敗差-31 手持ちのお金は9687.000000
732回目 賭け金は230.000000 win poolは115 勝敗差-30 手持ちのお金は9917.000000
733回目 賭け金は345.000000 win poolは172 勝敗差-29 手持ちのお金は10262.000000
734回目 賭け金は518.000000 win poolは259 勝敗差-28 手持ちのお金は10780.000000
(省略)
100000回目 賭け金は10.000000 win poolは0 勝敗差504 手持ちのお金は4279.000000

※srand((unsigned)time(NULL));の部分で時間を参照した上で乱数を発生させている。そのため、実行するタイミングで結果が変化する。

イーストコーストプログレッション法の期待値シミュレーション

 

プログラムで使用している変数の説明

b_pro:破綻率
※ここでいう破綻率とは手持ちのお金が、賭けに耐えられない状況を意味する。借金してお金を用意することはできないとする。

i_exp: 破綻するまで何回勝負ができるかの期待値
m_exp: 勝負が終わった段階で持っているお金の期待値
k_max:試行回数。
※k_maxを大きくすればするほど、正確な期待値が求まる。

c_exp:勝敗差の期待値

以下では、k_max=20000、i_max=100000で指定。
試行回数2万回、勝負回数10万回。

結果は以下のようになった

勝負回数は100000
試行回数は20000
破たん回数は12493
破たん率は62.465000%
破たんするまでに行える勝負回数の期待値(i_exp)は63824.098750
破たんする直前で持っているお金の期待値(m_exp)は9744.076150
破たんした時の勝負差の期待値は1.526750

実質的に、1.5倍のパーレー法なので、そこまで破綻率は高くないだろうと思っていたが、5連勝で止めるパーレー法より高い破綻率だった。

ちょっと意外

3回目で負けると損失が出る部分が効いているのかな?

書籍の紹介

ギャンブルの必勝法が本当に儲かるかプログラミングで検証してみた』は以下の疑問にお答えします。

●勝率が50%の場合、利益を生み出す必勝法は存在するか?
●勝率が60%の場合、どのように賭けるのが最適か?

必勝法と思われている手法を15種類紹介します。必勝法には、例えば、マーチンゲール法(負けた時に2倍賭ける手法)などがあります。これらの手法が本当に儲かるかプログラミングを使用して検証します。また、検証するために必要なプログラミングの知識(C#)も紹介しています。

ギャンブルの必勝法が本当に儲かるかプログラミングで検証してみた

関連記事

目次用の記事:ギャンブルの賭け方の種類をまとめてみた

~プログラミングを勉強してみませんか?~

TechAcademy [テックアカデミー] 無料の体験講座が用意されているので、気軽に体験できます。

※私(サイト主)も無料体験講座を実際に受けてみました(→感想)

     

コメント

コメントを残す

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)