マーチンゲール法で2倍儲かる確率を検証(c++/c言語)

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

スポンサーリンク

※サイト運営にサーバーは必須です※
ロリポップ! はコスパのよい初心者向けサーバーです~

目次

はじめに

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

ここ最近、マーチンゲール法などの様々なシミュレーションをしている。

どれだけ破綻しやすいか?結局賭けをして儲けることができるか?などの検証を、プログラムを通して数値的かつ定量的に検証している

そんなある日、「手持ちのお金が1000でスタートして1100や2000に達成する確率ってどんなもんなの?」というコメントを頂いた。

そんなに難しくなさそうなので、この記事では、どんなもんなのか確かめてみる

マーチンゲール法とは?

マーチンゲール法とは、負けたら、勝つまで、賭ける金額を2倍にしていく手法。もしも、勝ったら、賭ける金額は1に戻す。

詳しくは、以下の記事を参照

マーチンゲール法での確率を検証

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

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

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

マーチンゲール法の個別シミュレーション

 

きちんと、こちらが想定した動きをするか確認するため用のプログラム

<プログラムで出てくる変数の説明>

i_max:勝負の回数
w:賭けたお金の戻る倍率を指定。ここでは2倍を指定
p:勝率を指定。ここでは1/2の確率なので50を指定。
m_min:かけ金を指定(ここでは1)
m_ini:最初の資金を指定(ここでは1000)
m_tar:目標金額を指定(ここでは1100)
c:トータルの勝ち負けの差がどのくらいあるか調べる用
r:乱数(0~100の乱数)

ひとまず、プログラムを動かしてみると以下のような結果に

#倍率は2.000000 勝率は50.000000 最小の賭け金は1.000000 手持ちのお金は1000.000000 目標金額は1100.000000
1回目 賭け金は1.000000 win 勝敗差1 手持ちのお金は1001.000000
2回目 賭け金は1.000000 lose 勝敗差0 手持ちのお金は1000.000000
3回目 賭け金は2.000000 win 勝敗差1 手持ちのお金は1002.000000
4回目 賭け金は1.000000 lose 勝敗差0 手持ちのお金は1001.000000
5回目 賭け金は2.000000 win 勝敗差1 手持ちのお金は1003.000000
6回目 賭け金は1.000000 lose 勝敗差0 手持ちのお金は1002.000000
7回目 賭け金は2.000000 lose 勝敗差-1 手持ちのお金は1000.000000
8回目 賭け金は4.000000 lose 勝敗差-2 手持ちのお金は996.000000
9回目 賭け金は8.000000 lose 勝敗差-3 手持ちのお金は988.000000
10回目 賭け金は16.000000 win 勝敗差-2 手持ちのお金は1004.000000
11回目 賭け金は1.000000 lose 勝敗差-3 手持ちのお金は1003.000000
(省略)
209回目 賭け金は64.000000 win 勝敗差-9 手持ちのお金は1100.000000
現在の手持ちのお金は1100.000000、目標金額1100.000000を達成しました

ひとまず、プログラムがおかしな挙動はしていないのを確認。

今回の場合は、209回目で目標金額である1100を達成。

マーチンゲール法の場合、破綻さえしなければ、勝った回数分だけ手持ちの金額が+1される。

勝負に勝つ確率は50%なので、200回勝負を重ねれば、期待値的には100回勝っていることになる。そして、手持ちのお金は+100されるはず。

つまり、最初の金額である1000から目標金額1100を達成するのに必要な勝負回数は200回程度に収まる。

今回に209回勝負が終わるというのは、わりと納得できる。

マーチンゲール法の期待値シミュレーション

上の個別シミュレーションを何度も行うことで、期待値や確率を求める

 

<プログラムで出てくる主な変数の説明>

b_pro:破綻率
※ここでいう破綻率とは手持ちのお金が、賭けに耐えられない状況を意味する。借金NG
i_exp: 破綻するまで何回勝負ができるかの期待値
m_exp: 勝負が終わった段階で持っているお金の期待値
k_max:試行回数。
※k_maxを大きくすればするほど、正確な期待値が求まる。
c_exp:勝敗差の期待値
t_pro:目標金額達成確率

以下の3パターンの判定がでる

1:目標金額に達成した場合は、達成判定

2:賭けしようにも手持ちのお金が足りない場合は、破綻判定
(借金はできない。借金しないぎりぎりのところで破綻判定が出る。)

3:指定した勝負回数までに、目標金額を達成できず、かといって破綻もせず、金額がふらふらしていた場合はセーフ判定がでる

勝負回数10万回、試行回数10万回でプログラムを走らせると以下のような結果になった

勝負回数は100000
試行回数は100000
破たん回数は11176
目標金額達成回数は88824
破たん率は11.176000%
破たんするまでに行える勝負回数の期待値(i_exp)は186.859990
破たんする直前で持っているお金の期待値(m_exp)は1001.449840
破たんした時の勝負差の期待値は0.033770
目標金額達成確率は88.824000%

マーチンゲール法で、1000から1100へお金を破綻せず増やせる確率は88.824%だと判明。

目標金額達成確率88.824%に破たん率11.176%を足して100%になることから、目標金額を達成できず、かといって破綻もしないというケースは存在しない(つまり、セーフ判定は生じていない)

まあ、セーフ判定が生じないのはある意味当然。

100回勝てば、目標金額に達成できるのに対して、勝負回数を10万回と十分にとったので、セーフ判定は起こりえない。

今度は目標金額を1100でなく、別の数字に変えてみる。

ここでは1200(1.2倍)、1210(1.21倍)、1500(1.5倍)、2000(2倍)、2600(2.6倍)、3000(3倍)のパターンを考える

1000→1200(1.2倍)の確率

勝負回数は100000
試行回数は100000
破たん回数は19385
目標金額達成回数は80615
破たん率は19.385000%
破たんするまでに行える勝負回数の期待値(i_exp)は356.109000
破たんする直前で持っているお金の期待値(m_exp)は1001.893530
破たんした時の勝負差の期待値は-0.033800
目標金額達成確率は80.615000%

1000→1210(1.21倍)の確率

勝負回数は100000
試行回数は100000
破たん回数は20366
目標金額達成回数は79634
破たん率は20.366000%
破たんするまでに行える勝負回数の期待値(i_exp)は371.271980
破たんする直前で持っているお金の期待値(m_exp)は999.887630
破たんした時の勝負差の期待値は0.012760
目標金額達成確率は79.634000%

1000→1500(1.5倍)の確率

勝負回数は100000
試行回数は100000
破たん回数は40279
目標金額達成回数は59721
破たん率は40.279000%
破たんするまでに行える勝負回数の期待値(i_exp)は772.199380
破たんする直前で持っているお金の期待値(m_exp)は996.563050
破たんした時の勝負差の期待値は-0.133580
目標金額達成確率は59.721000%

1000→2000(2.0倍)の確率

勝負回数は100000
試行回数は100000
破たん回数は63025
目標金額達成回数は36975
破たん率は63.025000%
破たんするまでに行える勝負回数の期待値(i_exp)は1250.506080
破たんする直前で持っているお金の期待値(m_exp)は1003.081010
破たんした時の勝負差の期待値は0.019760
目標金額達成確率は36.975000%

1000→2600(2.6倍)の確率

勝負回数は100000
試行回数は100000
破たん回数は73162
目標金額達成回数は26838
破たん率は73.162000%
破たんするまでに行える勝負回数の期待値(i_exp)は1623.279720
破たんする直前で持っているお金の期待値(m_exp)は1000.972770
破たんした時の勝負差の期待値は-0.023660
目標金額達成確率は26.838000%

1000→3000(3倍)の確率

勝負回数は100000
試行回数は100000
破たん回数は78084
目標金額達成回数は21916
破たん率は78.084000%
破たんするまでに行える勝負回数の期待値(i_exp)は1815.888310
破たんする直前で持っているお金の期待値(m_exp)は996.358130
破たんした時の勝負差の期待値は-0.006690
目標金額達成確率は21.916000%

結果考察

マーチンゲール法で手持ちのお金を2倍できる確率が約37%

マーチンゲール法で手持ちのお金を3倍できる確率が約22%

ここで、マーチンゲール法で手持ちのお金を1.1倍できる確率が88.824%であったことを利用して、手持ちのお金が1.1倍以外の時のどうなるかある程度推測することも可能である。

例えば1000から1331(1000→1100→1210→1331)までお金を増やすには、1000に1.1倍を3回繰り返せばよい。

確率的には、(0.88824)の3乗に相当するはず

以下では、1.1倍もとにした類推用テーブルである

回数 倍率 確率(%)
1 1.1 88.824
2 1.21 78.89703
3 1.331 70.0795
4 1.4641 62.24741
5 1.61051 55.29064
6 1.771561 49.11136
7 1.948717 43.62267
8 2.143589 38.7474
9 2.357948 34.41699
10 2.593742 30.57055
11 2.853117 27.15399
12 3.138428 24.11926

1.5倍(1000→1500)するには、1.1倍を4~5回するのに相当する。1.1倍のデータをもとに類推すると55.2%~62.2%の間に収まりそうで、実際のシミュレーション結果も59.72%である。二つの結果は矛盾しない

ただし、1.1倍を何度も繰り返す必要がある場合、シミュレーションの結果とどうも合わなくなってくる。

2倍(1000→2000)するには、1.1倍を7~8回で38.7~43.6%の間で収まりそうなのだが、実際のシミュレーション結果は36.9%と類推した値より低くでた。

※シミュレーションと1.1倍をもとにした類推結果の不一致の原因はわかっていない。可能性として、1.1倍の時に見積もった値は88.824%であったが、実際にはこれよりもほんの少し小さな値なのかもしれない。類推するにあたって、累乗していくと、その小さな誤差が無視できなくなっていた可能性がある。

まとめ

  • マーチンゲール法で1.1倍儲かる確率が約88.8%
  • マーチンゲール法で2倍儲かる確率が約37%
  • マーチンゲール法で3倍儲かる確率が約22%

書籍の紹介

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

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

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

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

関連記事

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

~ギャンブルに絶対儲かる必勝法があるのだろうか?~

私(サイト主)はこの疑問に対して非常に興味を持ち、プログラミングで検証してみました。

このサイトを応援してもいいかなと思う人はぜひとも購入を検討してみてください。

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

     

コメント

  1. へのへのもへじ より:

    うわぁー、うわぁー、うわぁー、確率低いですね。
    10%増える確率が90%、50%が75%、100%が50%だと思ってました。
    賭ける度にお金が減っていくのは運が悪かったんじゃなく
    確率を理解していない頭が悪かったとは・・・。
    高校時代に戻って確率勉強し直したいです。
    早速教えていただき、どうも有り難う御座いました!

    今日1日、ずっと確率で悩んでました。
    お金の期待値が一部を除いて約1000なのは
    結局は確率2分の1の賭事なら
    どのような賭け方であってもプラスマイナス0に変わりがない。

    マーチンゲール法と2in1法では
    破綻率は2in1が低くても、お金の期待値は変わらない。
    つまり、1の負けを取り戻す時に
    マーチンゲールで倍掛けする時も、2in1で分解して複数回で取り戻す時も
    失敗して破綻する確率はほぼ同じ。
    2in1の破綻率が低いのは、ただ負けを取り戻すための手数が多いだけで
    一定額の資金を増やすのに成功する確率も、その間の破綻率も大差はない。
    2in1の方が多くのゲームを楽しめるが
    資金を増やす目的なら、無駄に回数を重ね時間の浪費になる。

    パーレー法5回では、成功時に31枚コインが増えるので
    失敗する確率は32分の31。
    最初から1000分の1ではなく32掛ける時と320増える確率や破綻率は同じ。
    32枚掛け続けるより沢山ゲームを楽しめるが、資金を増やす目的では回数が増えるだけ。

    これらの手法は資金を増やす攻略法ではなく
    資金の増減量をコントロールする手法に過ぎない。
    早く資金が増える確率が高い手法ほど減る確率も高くなり、破綻する確率も上がる。
    マーチンゲールやモンテカルロ、ウィナーズ投資法等の負けを許さない方法では
    賭け金が高騰して破綻するので、破綻を免れるにはどこかで損切りすべきだが
    損切りすると資金は減少し、最終時の資金は1000に近くなる。
    そして破綻しない限り、賭け方や金額は資金の増減速度や増減幅を変えるだけで
    勝率50%倍率2倍の賭け事では、 最終的な平均値が1000から変わることはない。

    こんな認識であってるでしょうか??

    1. kaen より:

      その認識であっています。

      一連のシミュレーション記事は、「世の中に、必勝法はあるのだろうか?」という個人的な疑問から書き始めました。有名な賭け方をほぼ全部シミュレーションした結果、今のところ、勝率50%倍率2倍という条件で必勝法は存在しないということがわかました。

      まあ、もしも必勝法があったらカジノは儲からないでしょうし……

  2. へのへのもへじ より:

    どうも有り難う御座いました。
    2in1等は2分の1の勝利で取り返せるなど
    まるで魔法のように思ったのですが。
    甘かったです(笑)

    自分では有効性を検証できなくて困ってましたので凄く助かりました。
    感謝です!

コメントを残す

*

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