ダランベール法(上限あり)の期待値シミュレーションはじめに※目次用の記事:ギャンブルの賭け方の種類をまとめてみた賭け方にはいくつか種類がある。そのうちの一つであるダランベール法というのがある。※ダランベール法はピラミッド法ともよばれることがあるこの記事では、ダランベール法とはなにかを説明して、プログラムによるシミュレーション結果を示す。ダランベール法とは最初の賭け金額を自分で設定する。負けた場合:次の勝負の賭け金を、1増やす勝った場合:次の勝負の賭け金を、1減らす※逆ダランベールという手法も存在する逆ダランベール法は、ダランベール法と勝った時と負けた時の対応が逆になる。負けた場合:次の勝負の賭け金を、1減らす勝った場合:次の勝負の賭け金を、1増やす逆ダランベール法をダランベール法として紹介しているサイトが一部見受けられる......<ダランベール法の特徴>勝った時は、少なく賭けて、負けている時は多く賭ける、手法といえる。賭けるお金の変動が±1なので、賭け金の変動が少ない。※勝率が50%を切る勝負だと、負ける回数の方がおおくなるので、賭け金がどんどん膨らむ。一方で、勝率が50%を超える勝負だと、すぐに、賭ける金額が小さくなる。勝率が50%に近い勝負に使われる手法といえる。<実践上の問題>最初にスタートする金額を20とした場合に、勝ち続けて、勝敗差が20になったとする。その場合賭ける金額は0になる。場合賭ける金額は0になった場合どうするか、以下の2つのパターンが考えられる(a)勝負をいったんやめる(b)賭ける金額を1にして、勝負を続行するもしも(b)のパターンを考えた時に、ちょっと考えないといけないことがある。ダランベール法に従う場合、賭け金は(賭ける金額)=(最初にスタートする金額)-(これまでの勝敗差)になる。勝率が50%のゲームに挑んだ場合で、賭ける金額が20にした時を普通に考えると、勝負が進んでも、勝つ確率と負ける確率が半々なので、賭ける金額もプラス・マイナスがキャンセルされ、期待値的には20に収まるように思える。勝敗差が20を超えてしまう場合、(b)パターンにおいて、(賭ける金額)が最低である1になる。なると、(賭ける金額)=(最初にスタートする金額)-(これまでの勝敗差)は正しくなくなる。正確には、勝敗差が20以上になった分だけ、賭ける金額が増える。これは、勝負を重ねていくうちに(賭ける金額)=(最初にスタートする金額)-(これまでの勝敗差)+αされることを意味する。上限を設ける※例えば、(最初にスタートする金額)の2倍を最大値とする(3)勝敗差が最初にスタートする金額を超えない限り、(最初にスタートする金額)-(これまでの勝敗差)の式に従う。以下では2種類のプログラムを紹介する。上限を設けないダランベール法を主に扱う。※マーチンゲール法(2倍賭け)の破綻までのシミュレーションで紹介したプログラムと同じ変数の置き方をしているi_max:勝負の回数w:賭けたお金の戻る倍率を指定。ここでは2倍を指定p:勝率を指定。ここでは1/2の確率なので50。※初期(initial)のスぺルを自分が勘違いしていたことに後から気が付いた。プログラムと記事を今からすべて手直しするのはしんどいので、時間があったら、宣言する変数の名前をm=intからm_iniに書き替えたい。......文章を書いている人間の英語力の低さがばれて、地味に恥ずかしい。※ここではm_min=1でm_int=1000と、最小の賭け金の1000倍を所持していると考えている。最小の賭け金が1000円(千円)だとするなら、手元の軍資金は、1000000円(百万円)。現実的な設定だと思われる。r:乱数(0~100の乱数)※乱数rが勝率pより下の数で収まるなら勝ちの判定がでる。勝負を続けていくうちに、負け続けることもあるだろう。賭けしようにも手持ちのお金が足りなくなるかもしれない。この場合、これ以上勝負ができなくなり、プログラムは終了する。(破綻判定)つまり、借金はNG※マーチンゲール法になかった変数c:トータルの勝ち負けの差がどのくらいあるか調べる用。←(+3−7)実際にプログラムを走らせると以下のような結果となる勝負回数i_maxは100000(10万回)までとする※上限を設けない(2)のパターンの結果。最初の賭け金額は20でスタートする。手持ちのお金は54.00000019525回目で手持ちのお金が足りませんこの結果からわかるのは、上限を設けない場合だと、たとえ、負けの数より勝ちの数が多くても破綻することがある。(この場合、勝ちの回数が負けの回数より255多いのに、手持ちのお金が無くなっている)上でも議論した通り、勝負を重ねていくと、(賭ける金額)=(最初にスタートする金額)-(これまでの勝敗差)という式から外れていく。※srand((unsigned)time(NULL));の部分で時間を参照した上で乱数を発生させている。そのため、実行するタイミングで結果が変化する。※ここでいう破綻率とは手持ちのお金が、賭けに耐えられない状況を意味する。借金してお金を用意することはできないとする。勝負が終わった段階で持っているお金の期待値k_max:試行回数。※k_maxを大きくすればするほど、正確な期待値が求まる。以下では、k_max=100000、i_max=100000で指定。試行回数10万回、勝負回数10万回。結果は以下のようになる勝負回数は100000試行回数は100000破たん回数は97722破たん率は97.722000%破たんするまでに行える勝負回数の期待値(i_exp)は8778.653740破たんする直前で持っているお金の期待値(m_exp)は1009.359560破たんした時の勝負差の期待値は-0.283600破綻率は97.72%。マーチンゲール法ほどではないが高い数字となっている。お金の期待値は1009となっており、初期の1000よりわずかに増えている。(ぶっちゃけ、誤差の範囲で、ダランベール法が儲かることの証明にはなっていない)10万回勝負を行うと、ほとんどの場合がもとの1000を下回り、一部10万回勝負が続行できた場合は大きな資金を手にするといった結果となった。ちなみに、賭け金額の上限を設けた場合は以下のような結果となる※上限は、最初の賭け金額の2倍の40とした。※オーバーフローする可能性もあったので、試行回数であるk_maxを10万回から2万回に減らしている。※プログラムは一番したのページで紹介している勝負回数は100000試行回数は20000破たん回数は17952破たん率は89.760000%破たんするまでに行える勝負回数の期待値(i_exp)は18883.871200破たんする直前で持っているお金の期待値(m_exp)は983.052100破たんした時の勝負差の期待値は-0.667800上限を設けた分、破綻する率は97.72%から89.76%に少し落ちた。』は以下の疑問にお答えします。●勝率が50%の場合、利益を生み出す必勝法は存在するか?●勝率が60%の場合、どのように賭けるのが最適か?必勝法と思われている手法を15種類紹介します。必勝法には、例えば、マーチンゲール法(負けた時に2倍賭ける手法)などがあります。これらの手法が本当に儲かるかプログラミングを使用して検証します。検証するために必要なプログラミングの知識(C#)も紹介しています。最後に、上限を設けたバージョンのプログラムを乗せておく。無料の体験講座が用意されているので、気軽に体験できます。PM今回の記事では、最小単位を1000円(千円)と考えて、その1000倍の100万円持っているという仮定で考えています。最小単位を1ドルと解釈するならその1000倍の1000ドル持っていると考えて問題ないです。PMキロ計算だったのですね。*メールアドレス(公開はされません。date*日本語が含まれない投稿は無視されますのでご注意ください。