理論上は確実な勝利を約束しますが、マーチンゲールベッティング戦術を実践的なテストにかけてみました。ダブルダウンは機能するのでしょうか?シミュレーションとビデオでのレビュー。
マーチンゲール法は18世紀のフランスで生まれ、現在も最も有名な賭け戦略の一つとして知られています。その人気の理由は以下の3つです:
ご存知のように、ルーレットではボールが赤または黒のスロットに入るかどうかを賭けることができます。 当たり前ですが、正解した場合、賭け金と同額を勝ち取ることができます。つまり、賭け金が100ドルの場合、勝ち金も100ドル(賭け金と合わせて200ドルが戻ってくる)です。
赤に100ドル賭けると仮定しましょう。 マーチンゲール戦術によれば、賭けに負けた場合、次のラウンドで掛け金を倍にします、つまり、赤に200ドル賭けます。 これにより、赤が勝った場合、最初のラウンドで失った100ドルを取り戻し、さらに100ドルを得ることができます。 もしまた黒が勝った場合、再び掛け金を倍にして、赤に400ドル賭けます。 基本的には、赤が出るまで賭け金を倍にしていきます。 それが出たら、プロセスを再開し、ベースの賭け金を100ドルに戻します。
実際には、この方法は主に2つの要因によって制限されます。
この戦略の使用を助けるために、私たちはExcelスプレッドシートを作成しました。ここでは、最初のベットの金額を入力し、それぞれの損失の場合にどれだけ追加でベットする必要があるかを見つけることができます。 これはルーレットや、賭け金の2倍を取り戻せるような同様のゲームで使用できます。 同様に、下の表を使用して、100ドルの開始ベットを想定しています。 この表は、ヨーロッパ式ルーレット(黒/赤のベットなど)での連敗の確率も示しています。
この問題に答えるために、10,000回のルーレットのスピンと、この戦略を適用するシミュレートされたプレイヤーをシミュレートするコンピュータープログラムを作成しました。 また、この記事でこのシミュレーションのソースコードも閲覧できます。
シミュレーション、つまり10,000回のルーレットのスピンを100回実行した結果、この戦略が利益を生み出すことができたのは11回だけでした。 これらの場合、プレイヤーは最初の資本の2倍から6倍の額を得ました。 しかし、大半の場合、つまり残りの89回では、プレイヤーのバランスは10,000回目のラウンドよりも前に尽きました。
一般的に言えることは、この戦略は短期的にはプラスのバランスを生み出すことができるということです。 しかし、遅かれ早かれ、プレイヤーは運が悪い連続に遭遇し、すべての資本を失うことになります。
マーチンゲールシミュレーションのPythonコードを実行できます。 無料のGoogle ColabノートブックなどのJupyterノートブック環境で実行するのが最適です。
import random
import seaborn as sns
import matplotlib.pyplot as plt
mpockets = ["Red"] * 18 + ["Black"] * 18 + ["Green"] * 1
mrolls = []
def makeRandomRolls():
global mrolls
mrolls = []
mi = 0
while mi < 10000000:
mi += 1
mrolls.append(random.choice(mpockets))
def always_red_Martingale(bankroll, maxspin):
bankroll = 100
bet = 1
currentSpin = -1
pockets = ["Red"] * 18 + ["Black"] * 18 + ["Green"] * 1
bankroll_history = []
roll_history = []
betTrigger = False
while (bankroll > 0) and (currentSpin < maxspin):
currentSpin = currentSpin + 1
roll = mrolls[currentSpin]
roll_history.append(roll)
if bet > bankroll:
bet = bankroll
#print('!!! BET Larger than bankrol. Setting max bet to: ' + str(bankroll))
if betTrigger == True:
if roll == "Red":
#print('!!! Bet placed and Won. Bet was: ' + str(bet))
bankroll += bet
bet = 1
betTrigger = False
else:
bankroll -= bet
bet *= 2
#print('!!! Bet placed and LOST. New bet is: ' + str(bet))
if (currentSpin > 2) and \
(roll_history[-1] == "Black") and \
(roll_history[-2] == "Red"):
betTrigger = True
bankroll_history.append(bankroll)
return bankroll_history
sns.set(rc={'figure.figsize':(18.7,8.27)})
MS = 10000
makeRandomRolls()
plt.plot(always_red_Martingale(bankroll=100,maxspin=MS), linewidth=2, label='Player using Martingale strategy, always bets on red (with 1 USD)')
plt.xlabel("Number of roulette spins", fontsize=18, fontweight="bold")
plt.ylabel("Balance (USD)", fontsize=18, fontweight="bold")
plt.xticks(fontsize=16, fontweight="bold")
plt.yticks(fontsize=16, fontweight="bold")
plt.title("How balance changes with each roulette spin (bet)", fontsize=22, fontweight="bold")
plt.legend(loc="upper left")