分散(spin&go)
勝負は時の運。ポーカーは強い人が勝ちやすいが常に勝てる訳ではない。
逆に下手な人でも短期的には勝てたりする。
ギャンブル全般的に言えることだとおもう。
パチンコ屋でなんにも考えずに新台打って期待値-2000円/hの人だって勝つ日はある。
前回のspin&goのシミュレーションでグラフを書いてみた。
$15spin&goの配当をモデルにしている。
勝率の部分はchipEVで表示するようにした。
chipEV=0の人。三回に一回勝てる人が1万ゲーム回すとこうなる。
15セットの収支グラフを重ねてみた。綺麗に右肩下がりだ。
(以下全てのグラフは15本重なっています。)
これがレーキになる。
chipEV=30だとどうなるか?(勝率35.34%)
勝つときもあるけど大体負けてる。
chipEV=33,36の場合
この辺は勝ったり負けたりになってくる。
レーキが33chipsくらいになりそう。
chipEV=40
10000倍に当たってグラフが潰れたwのでもう一枚
chipEV=43,50
10万回にしてみると
chipEV=36
chipEV=40
chipEV=58
以上、グラフを書く練習でした。グラフを重ねるのはfor文を使えば出来るかなぁと思ったんだけど上手く動かなかった。たぶんもっと簡単に書けるはずなんでこうした方がもっと楽だよとか教えてくれると嬉しいです。
【グラフを重ねるのはfor loopを使って解決しました。】
import random
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
chipEV = 58#チップEV
k = 100000#1セットのゲーム数
set_t= 15#全セット数
set_ = 0
total_bank = 0
total_win_count = 0
total_game_count = 0
total_bank_l = []
for i in range(set_t):
set_ += 1
game_count = 0#ゲーム数
win_count = 0#勝利数
bank =0#収支
bank_l = []
for i in range(k):
game_count += 1
bank -= 15
p = random.randint(1,1000000)
w = random.randint(1,1500)
if w <= (chipEV+500):#勝った場合
win_count += 1
if p <= 434882:#2倍
bank += 30
elif p <= 908894:#3倍
bank += 45
elif p <= 993894:#5倍
bank += 75
elif p <= 998894:#10倍
bank += 150
elif p <= 999894:#25倍
bank += 375
elif p <= 999969:#100倍
bank += 1500
elif p <= 999999:#200倍
bank += 3000
elif p ==1000000:#10000倍
bank +=150000
else:#負けた場合
if 999894 < p <= 999969:#10倍
bank += 150
elif 999969 < p <= 999999:#20倍
bank += 300
elif p ==100000:#1000倍
bank +=15000
bank_l += [bank]
total_bank_l += [bank_l]
a= round(win_count/game_count*100,2)
e= round(1500*win_count/game_count-500,2)
total_bank += bank
total_game_count += game_count
total_win_count += win_count
b = total_win_count/total_game_count
e_t= round(b*1500-500,2)
x = np.array(range(1,k+1,1))
roi=total_bank/(k*set_t*15)*100
x = x
plt.figure(figsize=(20, 12))
plt.title("spin&go $15 chipEV={0} {1}games".format(chipEV,k))
plt.xlabel("{0}games x {1}set result:{2}chips/g ROI={3}%".format(k,set_t,e_t,roi))
plt.ylabel("$")
d=1
for loop in range(set_t):
yd = total_bank_l[d-1]
plt.plot(x, yd)
d +=1
plt.grid(True)
plt.savefig('chipEV{0}_{1}'.format(chipEV,k))
plt.show()
よろしければサポートお願い致します。ポーカーの教材費等の記事に役立つ用途に利用させて貰います。 poker stars ID:ryu1.1125 にトランスファーしてくれても嬉しいです。