ディスクアップの設定判別ツール作成
今回はディスクアップの設定判別ツールをPythonで作成します。
過去に作成したジャグラーの設定判別と異なり、ディスクアップはART(DANCE TIME, DJ ZONE)中の「共通9枚役」と「はずれ」も計算する必要があります。
設定推測値の計算方法
計算自体は簡単で、二項分布の確率算出の関数である「binom.pmf」で「回転数」を入力し
ていたところに「ART回転数」を入れるだけです。
具体的には、下記の計算式になります。
共通9枚役の二項分布確率 = binom.pmf(共通9枚役回数, ART回転数, 共通9枚役の設計上の確率) はずれの二項分布確率 = binom.pmf(はずれ回数, ART回転数, はずれの設計上の確率)
また、ディスクアップではビタ乗せなし(BB中のビタ押し成功時に上乗せが発生しない)確率にも設定差が設けられているため、こちらの計算も必要です。
この場合も計算自体は簡単で、先ほどの「回転数」の部分を「BB中の回転数」に変更するだけです。
具体的には以下のように、BB1回あたりのG数である25Gに、BB回数をかけることによって計算できます。
ビタ乗せなしの二項分布確率 = binom.pmf(ビタ乗せなし回数, BB回数 * 25, ビタ乗せ無しの設計上の確率)
あとはジャグラーの設定判別ツールと同様に各役の二項分布確率を計算すれば完成です。
今回作成したコード
こちらが実際に作成したディスクアップの設定判別ツールのコードです。
# coding: UTF-8 from scipy.stats import binom def S_EST(回転数, BB, RB, チェリー, スイカ, ART回転数, 共通9枚, はずれ, 異色BB, チェレグ, ビタ乗せなし): # 設定値データを定義 header = ['Machine', 'Setting', 'BB', 'RB', 'Cherry', 'Suica', '9mai', 'Hazure', 'ABB', 'CherryRB', 'Bita'] set1 = ['Disc', '1', '288.7', '496.5', '26.0', '46.9', '20.0', '11.5', '16384', '5461.3', '4156'] set2 = ['Disc', '2', '287.4', '458.3', '24.9', '45.3', '19.4', '10.9', '13107.2', '3276.8', '1032'] set5 = ['Disc', '5', '281.3', '442.8', '24.0', '42.4', '18.3', '9.9', '6553.6', '2978.9', '517'] set6 = ['Disc', '6', '273.1', '422.8', '23.1', '41.0', '17.6', '9.4', '3855.1', '2520.6', '258'] SetData = [header, set1, set2, set5, set6] # 設定段階分の確率算出値データをSetDataから読み込んでfor文を回す。 # ヘッダーを無視するために、iは1から。 S_EST = [] for i in range(1, len(SetData[:])): All_EST = 0 # それぞれの二項分布確率算出。空欄の場合はその項を無視 if 回転数 != -1 and BB != -1: BB_EST = binom.pmf(BB, 回転数, 1.0 / float(SetData[i][2])) All_EST = BB_EST if 回転数 != -1 and RB != -1: 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 回転数 != -1 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 回転数 != -1 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 ART回転数 != -1 and 共通9枚 != -1: Com9_EST = binom.pmf(共通9枚, ART回転数, 1.0 / float(SetData[i][6])) if All_EST == 0: All_EST = Com9_EST else: All_EST = All_EST * Com9_EST if ART回転数 != -1 and はずれ != -1: Hazure_EST = binom.pmf(はずれ, ART回転数, 1.0 / float(SetData[i][7])) if All_EST == 0: All_EST = Hazure_EST else: All_EST = All_EST * Hazure_EST if 回転数 != -1 and 異色BB != -1: BB_DT_EST = binom.pmf(異色BB, 回転数, 1.0 / float(SetData[i][8])) if All_EST == 0: All_EST = BB_DT_EST else: All_EST = All_EST * BB_DT_EST if 回転数 != -1 and チェレグ != -1: RB_Cherry_EST = binom.pmf(チェレグ, 回転数, 1.0 / float(SetData[i][9])) if All_EST == 0: All_EST = RB_Cherry_EST else: All_EST = All_EST * RB_Cherry_EST if BB != -1 and ビタ乗せなし != -1: Bita_EST = binom.pmf(ビタ乗せなし, BB * 25, 1.0 / float(SetData[i][10])) if All_EST == 0: All_EST = Bita_EST else: All_EST = All_EST * Bita_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を入力 回転数 = 707 BB = 1 RB = 3 チェリー = 25 スイカ = 18 ART回転数 = 43 共通9枚 = 2 はずれ = 3 異色BB = 0 チェレグ = 0 ビタ乗せなし = 0 S_EST(回転数, BB, RB, チェリー, スイカ, ART回転数, 共通9枚, はずれ, 異色BB, チェレグ, ビタ乗せなし)
設定判別ツールの実行結果
このプログラムを実行した時の結果はこちら。
設定 1 : 32.2 % 設定 2 : 29.5 % 設定 5 : 23.1 % 設定 6 : 15.2 %
無事に設定判別結果が出力されていますね。
にほんブログ村
にほんブログ村
コメント
コメントを投稿