バーサスの設定判別ツール作成
今回はバーサスの設定判別ツールを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 %
無事に設定判別結果が出力されていますね。
にほんブログ村
にほんブログ村
コメント
コメントを投稿