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