見出し画像

【python】システムベットをプログラミングで検証してみる(検証編①:ココモ法)

前回までのおさらい

前回:
【python】システムベットをプログラミングで検証してみる(前編)
【python】システムベットをプログラミングで検証してみる(後編)

前回までの上記2つの記事はプログラミングを独学で学ぶ上で足がかりになりそうなネタを提供してみた。

どちらかというと単に検証結果が気になる人にはつまらないネタだったかもしれない。

今回はどちらかというと検証をメインに書いてみる。
というわけで「検証編」のスタートだ。

コードの改修

前回までに書いたコードをココモ法をで任意の回数をシミュレーションできるよう改修した。結果だけが気になる人は読み飛ばしてもらって構わない。

# import
import random

# ルーレットの目
roulette = [
            1,2,3,4,5,6
            ,7,8,9,10,11
            ,12,13,14,15
            ,16,17,18,19
            ,20,21,22,23
            ,24,25,26,27
            ,28,29,30,31
            ,32,33,34,35
            ,36,0
            ]

# ----------------------------------------------
# ココモ法(ダズンベット:13~24にベットし続ける場合)
# ----------------------------------------------
def cocomo_bet(number, bet_, Balance, i):

  # (n回目)の勝敗結果を記録
  if number >= 13 and number <= 24:
    # 勝ち
    result_hist.append(1)
    win = bet_ * 3
    Balance = Balance + win
  else:
    # 負け
    result_hist.append(0)

  # 勝った場合、掛け金を元に戻す
  if result_hist[ i ] == 1:
    bet_ = bet_initial
  # 負けた場合(連敗した時)、次回の掛け金を変更する
  else:
    if i > 0 and result_hist[ i - 1 ] == 0 and result_hist[ i - 1 ] <= result_hist[ i ]:
      bet_ = bet_hist[ i - 1 ] + bet_hist[ i ]

  return(Balance, bet_)

# ----------------------------------------------
# 初期設定値
# ----------------------------------------------

# 初期残高
Balance_initial = 100000
# 初期ベット金額
bet_initial = 100
# 繰り返す回数(n回)
repeat = 100
# テーブルリミット(賭け金の上限)
table_limit = 30000

# ----------------------------------------------
# 記録用配列の設定
# ----------------------------------------------

# 勝敗結果の推移(勝ち: 1  負け: 0)
result_hist = []

# 賭け金の推移
bet_hist = []

# 残高の推移
Balance_hist = []

# ルーレットの出目の履歴
number_hist = []

# ----------------------------------------------

# ----------------------------------------------
# メイン処理
# ----------------------------------------------
bet_ = bet_initial
Balance = Balance_initial
count = 0

for i in range(repeat):

  count = i + 1

  # ベットできるかどうかの確認。 ※できない場合はバスト(破産)
  if Balance < bet_:
    print(str( count ) + "回目でバスト(残高不足のため賭けられません)")
    break
  if table_limit < bet_:
    print(str( count ) + "回目でバスト(テーブルリミット到達のため賭けられません)")
    break

  # (n回目)のベット額を記録
  bet_hist.append(bet_)
  # bet
  Balance = Balance - bet_
  # ルーレットを回す
  number = random.choice(roulette)

  # ココモ法で結果の確認
  Balance, bet_ = cocomo_bet(number, bet_, Balance, i)

  # (n回目)のルーレットの出目を記録
  number_hist.append(number)
  # (n回目)の残高を記録
  Balance_hist.append(Balance)


print("試行回数: " + str(count) + "回")
print("最終的な残高: " + str(Balance) + "円")
print("収支: " + str(Balance - Balance_initial) + "円")
print("最大ベット額: " + str(max(bet_hist)) + "円")

比較的見やすくなったと思う。
python環境がない人でも「Google Colaboratory」を使用すれば、簡単に上記のコードを実行できるので興味のある人は試してみて欲しい。

プログラミングに関する知識がなくたって、「Google Colaboratory」に上記のコードをコピー&ペーストすれば、素人にだって使用できるようになっている。

実行結果は下記の画像のようになる。

シュミレーション実行結果1
シュミレーション実行結果2

今回の主な改修点は以下の通りだ。

①画像のように結果だけ確認できるようにした
②実戦により近い形にしたかったので、テーブルリミットや残高不足になる場合も確認できるようにした

システムベットの限界について

システムベットといっても万能な賭け方や攻略法ではなく、機能しなくなって使えない場面に多く出くわすだろう。

システムベットが機能しなくなる場面というのは、強制的に損切りせざる得ない場合や、何らかの都合でシステムベットが続けられなくなった状態である。

これをお金をかけて実際に検証したとして、上記のような場面に遭遇すればたまったものではない。使ったお金だけ無駄になってしまう。

今回はプログラミングを使ってシュミレーションしているので、いくら破綻しようが無傷でいられる。これはプログラミングスキルを持ってる上で美味しい話なのかもしれないが。

設定に関しては下記の部分を好きにいじってもらえれば、好きなようにシミュレーションが可能だ。

# ----------------------------------------------
# 初期設定値
# ----------------------------------------------

# 初期残高
Balance_initial = 100000
# 初期ベット金額
bet_initial = 100
# 繰り返す回数(n回)
repeat = 100
# テーブルリミット(賭け金の上限)
table_limit = 30000

詳細はいろいろ条件を変えて試してみてほしいが、
ココモ法で100回の試行回数の場合、バスト(破綻)する回数はそこまで多くなかったが、1000回と試行回数を増やすと確実に1度はバストしてしまうことがわかる。

これで無理にお金を賭けて検証せずともタダで検証できるようになった。

実際にバストすることも踏まえると、お金を使ったシュミレーションは実に勿体無いことであり、いかに不合理的なことなのかがよくわかった。

「頭は生きてるうちにしか使えない」とうちの親が口癖のようによく言っていた。「賢く生きろ」ってことなんだろう。

検証結果

上記コードを実際に動かして結果がどうなったのかを例としてサンプルをいくつか提示する。


パターン1(100回)

# 初期残高:100000円
# 初期ベット金額:100円
# 試行回数:100回
# テーブルリミット(賭け金の上限):30000円

【サンプル結果】

試行回数: 100回
最終的な残高: 108800円
収支: 8800円
最大ベット額: 2100円

試行回数: 100回
最終的な残高: 110400円
収支: 10400円
最大ベット額: 5500円

試行回数: 100回
最終的な残高: 112400円
収支: 12400円
最大ベット額: 14400円

試行回数: 100回
最終的な残高: 106100円
収支: 6100円
最大ベット額: 1300円

試行回数: 100回
最終的な残高: 112100円
収支: 12100円
最大ベット額: 8900円


パターン2(1000回)

# 初期残高:100000円
# 初期ベット金額:100円
# 試行回数:1000回
# テーブルリミット(賭け金の上限):30000円

【サンプル結果】

263回目でバスト(テーブルリミット到達のため賭けられません)
試行回数: 263回
最終的な残高: 68100円
収支: -31900円
最大ベット額: 23300円

186回目でバスト(テーブルリミット到達のため賭けられません)
試行回数: 186回
最終的な残高: 54500円
収支: -45500円
最大ベット額: 23300円

340回目でバスト(テーブルリミット到達のため賭けられません)
試行回数: 340回
最終的な残高: 81200円
収支: -18800円
最大ベット額: 23300円

14回目でバスト(テーブルリミット到達のため賭けられません)
試行回数: 14回
最終的な残高: 39100円
収支: -60900円
最大ベット額: 23300円

232回目でバスト(テーブルリミット到達のため賭けられません)
試行回数: 232回
最終的な残高: 66800円
収支: -33200円
最大ベット額: 23300円


パターン3(賭け金を10円)

# 初期残高:100000円
# 初期ベット金額:10円
# 試行回数:1000回
# テーブルリミット(賭け金の上限):30000円

【サンプル結果】

試行回数: 1000回
最終的な残高: 112960円
収支: 12960円
最大ベット額: 3770円

試行回数: 1000回
最終的な残高: 131520円
収支: 31520円
最大ベット額: 25840円

試行回数: 1000回
最終的な残高: 119090円
収支: 19090円
最大ベット額: 6100円

試行回数: 1000回
最終的な残高: 116710円
収支: 16710円
最大ベット額: 15970円

試行回数: 1000回
最終的な残高: 112260円
収支: 12260円
最大ベット額: 6100円


まとめ

いかがだっただろうか。
ココモ法を使った場合、賭け金がたった100円からスタートだったとしても100回を完遂できたとしても1000回を完遂するのは無理ゲーに近いということがわかったかと思う。

また賭け金を10円に下げることができれば、1000回の完遂は難しくなかった。

ただ、思わぬ収穫もあった。

賭け金を100円からスタートしたとして、100回以内にバストする可能性はゼロではない。
しかし、”100回目”を損切りラインに「1セット」と区切った場合、意外にも続けることは可能だということがわかった。

つまり、ココモ法を使用する場合、ぶっ続けで賭け続けるのではなく、◯回目と任意の回数を1つの区切りに設定して使用すれば可能性が見出せるということだ。

だが、最速で14回目にバストという結果もあったので、盲信するのはNGだ。サンプルデータを参照する限り、1回でもバストさせると総額収支もマイナスになってしまう。

14回目でバスト(テーブルリミット到達のため賭けられません)
試行回数: 14回
最終的な残高: 39100円
収支: -60900円
最大ベット額: 23300円

サンプルデータより

長くなったので今回の検証編はここで終わりとさせていただく。

システムベットに限界はあるとはいえ、希望の光が見出せたかもしれない。

また次回の検証編ではもう少し具体的に結果を見ていくとしよう。
CSV出力なども長くなってしまうので、焦らすようで申し訳ないが次回へ見送り。

次回(完結):
【python】システムベットをプログラミングで検証してみる(検証編②:ココモ法)【完結】


この記事が気に入ったらサポートをしてみませんか?