見出し画像

分散(spin&go)

勝負は時の運。ポーカーは強い人が勝ちやすいが常に勝てる訳ではない。
逆に下手な人でも短期的には勝てたりする。
ギャンブル全般的に言えることだとおもう。
パチンコ屋でなんにも考えずに新台打って期待値-2000円/hの人だって勝つ日はある。
前回のspin&goのシミュレーションでグラフを書いてみた。
$15spin&goの配当をモデルにしている。
勝率の部分はchipEVで表示するようにした。
chipEV=0の人。三回に一回勝てる人が1万ゲーム回すとこうなる。

画像10

15セットの収支グラフを重ねてみた。綺麗に右肩下がりだ。
(以下全てのグラフは15本重なっています。)
これがレーキになる。


chipEV=30だとどうなるか?(勝率35.34%)

画像10

勝つときもあるけど大体負けてる。

chipEV=33,36の場合

画像10

画像10

この辺は勝ったり負けたりになってくる。
レーキが33chipsくらいになりそう。

chipEV=40

画像10

10000倍に当たってグラフが潰れたwのでもう一枚

画像11

chipEV=43,50

画像11

画像11



10万回にしてみると
chipEV=36

画像11

chipEV=40

画像11



chipEV=58

画像11

以上、グラフを書く練習でした。グラフを重ねるのは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 にトランスファーしてくれても嬉しいです。