バーサスの設定判別ツール作成
今回はバーサスの設定判別ツールをPythonで作成します。
過去に作成したハナビの設定判別ツールとほぼ同じ要領で作成できます。
今回は、ハナビの設定判別ツール作成で説明できていなかった、BB中の判別要素の計算方法について記載します。
バーサスのBB中の判別要素といえば、「Vを狙え演出」ですね。
設定ごとにVを狙った時の停止形の出現確率が異なっているため、BBのG数を算出して計算に用いる必要があります。
BBのG数は24Gですが、せっかくなのでこの24Gを導出してみましょう。
バーサスのBBは344枚を超える払い出しで終了とあります。
BB中は、14枚役を1回取ったあと、15枚を取っていくので、下表のようになります。
24Gのところで、払い出し枚数が344枚を超えるので、24GでBB終了です。
方程式で算出するとしたら、以下の式となります。
15 * G数 - 1 > 344
→ G数 > 23
式を解くと、23Gを超えるG数が答えとなるので、24GでBBが終了することになります。
BBのG数がわかったので、「Vを狙え演出」での判別要素の二項分布確率を算出できます。
コードは以下のようになります。
三連Vテンパイの二項分布確率 = binom.pmf(三連Vテンパイ回数, BB * 24, 三連Vテンパイの設計上の確率)
こちらが実際に作成したバーサスの設定判別ツールのコードです。
※VS-CHANCE中のはずれ確率にも設定差があるようですが、設定差が小さいので項目から除外しています。
# coding: UTF-8
from scipy.stats import binom
def S_EST(回転数, BB, RB, チェリー, スイカ, ベル, 三連Vテン, 三連V上下段, 三連V斜め, VSゲームはずれ, VSゲームマイナス):
# 設定値データを定義
header = ['Machine', 'Setting', 'BB', 'RB', 'Cherry', 'Suica', 'Bell', 'ChBellB', 'SPBellA', 'SPBellB', 'HazureVS']
set1 = ['VS', '1', '297.9', '409.6', '39.19', '55.48', '13.54', '36.01', '496.48', '16384', '10.83']
set2 = ['VS', '2', '290', '381', '38.1', '53.49', '13.19', '24.01', '248.24', '16384', '9.71']
set5 = ['VS', '5', '282.5', '356.2', '37.06', '51.56', '12.86', '36.01', '496.48', '799.22', '8.8']
set6 = ['VS', '6', '268.6', '334.4', '38.05', '51.23', '12.54', '24.01', '248.24', '799.22', '7.6']
SetData = [header, set1, set2, set5, set6]
# 設定段階分の確率算出値データをSetDataから読み込んでfor文を回す。
# ヘッダーを無視するために、iは1から。
S_EST = []
for i in range(1, len(SetData[:])):
All_EST = 0
# それぞれの二項分布確率算出。空欄の場合はその項を無視
if 回転数:
BB_EST = binom.pmf(BB, 回転数, 1.0 / float(SetData[i][2]))
All_EST = BB_EST
if 回転数:
RB_EST = binom.pmf(RB, 回転数, 1.0 / float(SetData[i][3]))
if All_EST == 0:
All_EST = RB_EST
else:
All_EST = All_EST * RB_EST
if 回転数 and チェリー != -1:
Cherry_EST = binom.pmf(チェリー, 回転数, 1.0 / float(SetData[i][4]))
if All_EST == 0:
All_EST = Cherry_EST
else:
All_EST = All_EST * Cherry_EST
if 回転数 and スイカ != -1:
Suica_EST = binom.pmf(スイカ, 回転数, 1.0 / float(SetData[i][5]))
if All_EST == 0:
All_EST = Suica_EST
else:
All_EST = All_EST * Suica_EST
if 回転数 and ベル != -1:
Bell_EST = binom.pmf(ベル, 回転数, 1.0 / float(SetData[i][6]))
if All_EST == 0:
All_EST = Bell_EST
else:
All_EST = All_EST * Bell_EST
if BB and 三連Vテン != -1:
Vten_EST = binom.pmf(三連Vテン, BB * 24, 1.0 / float(SetData[i][7]))
if All_EST == 0:
All_EST = Vten_EST
else:
All_EST = All_EST * Vten_EST
if BB and 三連V上下段 != -1:
Vtu_EST = binom.pmf(三連V上下段, BB * 24, 1.0 / float(SetData[i][8]))
if All_EST == 0:
All_EST = Vtu_EST
else:
All_EST = All_EST * Vtu_EST
if BB and 三連V斜め != -1:
Vn_EST = binom.pmf(三連V斜め, BB * 24, 1.0 / float(SetData[i][9]))
if All_EST == 0:
All_EST = Vn_EST
else:
All_EST = All_EST * Vn_EST
if BB and VSゲームはずれ != -1:
VShazure_EST = binom.pmf(VSゲームはずれ, BB * 20 - VSゲームマイナス, 1.0 / float(SetData[i][10]))
if All_EST == 0:
All_EST = VShazure_EST
else:
All_EST = All_EST * VShazure_EST
S_EST.append(All_EST)
# 結果の表示
for i in range(len(S_EST)):
print("設定", SetData[i + 1][1], ":", round(S_EST[i] / sum(S_EST) * 100,1), "%")
if __name__ == "__main__":
# 実践データ
# カウントしていない場合は-1を入力
回転数 = 3415
BB = 16
RB = 6
チェリー = 90
スイカ = 69
ベル = 275
三連Vテン = 20
三連V上下段 = 1
三連V斜め = 0
VSゲームはずれ = 40
VSゲームマイナス = 60
S_EST(回転数, BB, RB, チェリー, スイカ, ベル, 三連Vテン, 三連V上下段, 三連V斜め, VSゲームはずれ, VSゲームマイナス)
このプログラムを実行した時の結果はこちら。
設定 1 : 0.0 % 設定 2 : 6.1 % 設定 5 : 1.3 % 設定 6 : 92.6 %
無事に設定判別結果が出力されていますね。
にほんブログ村
にほんブログ村
コメント
コメントを投稿