ルーレットなどのギャンブル
元手が倍になる確率はいくらになるでしょうか?
解説動画はこちら
数字は1-36まであり、赤か黒の色が設定されている
赤か黒に賭けると、当たったら2倍の払い戻し
このルールだと、元手が2倍になる確率はどれくらいでしょうか?

この式に代入していくと
この破産確率も見てみます。
ここでは計算を簡略化するために
1ゲームあたりの勝率を使って近似確率を求めていきます。
1ゲームあたりの勝率は以下のように設定することとします。
ルーレットは先ほどと同じなので他を見ると
ブラックジャックは意外と勝てそうですね
競馬とパチンコはもう
勝てる見込みがほぼ無いです。
競馬だと
単勝を同じ金額ずっと買い続けるみたいなものが
この確率に近くなります。
単純な買い方では
競馬で元手を増やすことは出来ないでしょうね。
まとめ
基本的にギャンブルは元手を倍にできる確率は非常に少ないので
ギャンブルでお金を減らす人が
一人でもいなくなりますように
それでは。
元手が倍になる確率はいくらになるでしょうか?
解説動画はこちら
問題
カジノのルーレットで元手が倍になる確率はどれくらいでしょうか?
ルール
100ドルを元手に 1ドル 単位で賭け続け
200ドル に到達するか0になったら終了
200ドル に到達するか0になったら終了
数字は1-36まであり、赤か黒の色が設定されている
数字0(緑)が1個、ここに当たるとディーラーが勝ち、賭けは没収
赤か黒に賭けると、当たったら2倍の払い戻し
このルールだと、元手が2倍になる確率はどれくらいでしょうか?
回答
ルーレットの元手が倍になる確率は
ギャンブラーの破産問題の公式に当てはめると解けるようです。
ギャンブラーの破産問題の公式に当てはめると解けるようです。
スタート資金を i、目標を N、負けたら破産(0)
勝率 p、負け率 q=1-p のとき
勝率 p、負け率 q=1-p のとき
目標に到達する確率は以下で表せます:

この式に代入していくと
• i = 100
• N = 200
• p = 18/37 = 0.48648649
• q = 19/37 = 0.51351351
こんな感じになり
計算式に当てはめると

となります。
最終的な確率を求める部分を
Pythonのコードでやってみましょう。
大体、0.45%くらい
1000回挑戦したら、4-5回でしょうか。
ルーレットのシミュレーションコード
これを実際にシミュレーションしてみます。
コードを簡略化するために
赤と黒の代わりに奇数なら当たり
偶数ならハズレにしてやってみます。
こんな感じになり
計算式に当てはめると

となります。
最終的な確率を求める部分を
Pythonのコードでやってみましょう。
p = (1 - (19/18) ** 100) / ( 1 - (19/18) ** 200 )
print(p)
print(f"{p*100:.04}%")
0.004466284539492003
0.4466%
大体、0.45%くらい
1000回挑戦したら、4-5回でしょうか。
ルーレットのシミュレーションコード
これを実際にシミュレーションしてみます。
コードを簡略化するために
赤と黒の代わりに奇数なら当たり
偶数ならハズレにしてやってみます。
import random
def simulate_game(start=100, goal=200, trials=10):
bankrupt_count, double_count = 0, 0
for _ in range(trials):
money = start
while 0 < money < goal:
# ルーレットの出目を 0-36 からランダムに選ぶ
spin = random.randint(0, 36)
if spin % 2 == 0: # 偶数 → 負け
money -= 1
else: # 奇数 → 勝ち
money += 1
if money == 0:
bankrupt_count += 1
elif money == goal:
double_count += 1
print(f"シミュレーション回数: {trials}")
print(f"破産した回数: {bankrupt_count}")
print(f"200ドルに到達した回数: {double_count}")
print(f"破産確率: {bankrupt_count/1000:.3f}")
print(f"成功確率: {double_count/1000:.3f}")
simulate_game(trials=1000)
シミュレーション回数: 1000
破産した回数: 997
200ドルに到達した回数: 3
破産確率: 0.997
成功確率: 0.003
おおよそ、数式の数値を近くはなりますね。
1000人いたら
4-5人は元手を増やしてカジノを出ることができる
そんな確率ですかね。
おおよそ、数式の数値を近くはなりますね。
1000人いたら
4-5人は元手を増やしてカジノを出ることができる
そんな確率ですかね。
ルーレット以外の破産確率
1.ブラックジャック(基本戦略でプレイ)
2.パチンコ(一般的な遊技機)
3.競馬(単勝を繰り返す単純モデル)
この破産確率も見てみます。
ここでは計算を簡略化するために
1ゲームあたりの勝率を使って近似確率を求めていきます。
1ゲームあたりの勝率は以下のように設定することとします。
• ブラックジャック(基本戦略+カジノ側有利)
→ プレイヤー勝率 ≈ 0.49、負け ≈ 0.51
• パチンコ(通常 0.80〜0.90 程度の還元率)
→ 実質勝率 ≈ 0.45、負け ≈ 0.55
• 競馬(通常 0.70〜0.80 程度の還元率)
→ 実質勝率 ≈ 0.40、負け ≈ 0.50 と仮定
ルーレットにこの3つも加えてシミュレーションするコード
from decimal import Decimal, getcontext
getcontext().prec = 50
def ruin_probability(s, N, p):
"""
ギャンブラーの破産確率
s: 初期資金
N: 目標資金
p: 勝率
"""
q = Decimal(1) - p
if p == q:
return Decimal(1) - Decimal(s) / Decimal(N)
else:
ratio = q / p
num = ratio**Decimal(s) - ratio**Decimal(N)
den = Decimal(1) - ratio**Decimal(N)
return num / den
# パラメータ
s = Decimal(100) # 初期資金
N = Decimal(200) # 目標資金
games = {
"ブラックジャック": Decimal("0.49"),
"ルーレット" : Decimal("0.48648649"),
"パチンコ": Decimal("0.45"),
"競馬": Decimal("0.40")
}
for game, p in games.items():
ruin = ruin_probability(s, N, p)
success = Decimal(1) - ruin
print(f"{game}:")
print(f" 破産確率 = {ruin:.20}")
print(f" 倍化確率 = {success:.20}")
print()
ブラックジャック:
破産確率 = 0.98202320998693248326
倍化確率 = 0.017976790013067516735
ルーレット:
破産確率 = 0.99553370920702988362
倍化確率 = 0.0044662907929701163797
パチンコ:
破産確率 = 0.99999999807255307809
倍化確率 = 1.9274469219075612712E-9
競馬:
破産確率 = 0.99999999999999999754
倍化確率 = 2.4596544265798292632E-18
ルーレットは先ほどと同じなので他を見ると
ブラックジャックは意外と勝てそうですね
競馬とパチンコはもう
勝てる見込みがほぼ無いです。
競馬だと
単勝を同じ金額ずっと買い続けるみたいなものが
この確率に近くなります。
単純な買い方では
競馬で元手を増やすことは出来ないでしょうね。
まとめ
1回あたりのおよその勝率から
破産確率は導き出すことができます。
破産確率は導き出すことができます。
基本的にギャンブルは元手を倍にできる確率は非常に少ないので
(ブラックジャックだけは、勝てる見込みが0ではない)
同じ100万円を注ぎ込むなら、まだ投資に回したほうがいいでしょう。
ギャンブルは卒業しよう!!!
ギャンブルでお金を減らす人が
一人でもいなくなりますように
それでは。

コメントする