P牙狼月虹ノ旅人(牙狼MAXX)のボーダー算出
お世話になっております、スログラミングです。
前回に引き続きボーダー算出を行っていきます。
機種はタイトルにあるとおり、P牙狼月虹ノ旅人(牙狼MAXX)です。
(メーカーサイトを見るといつの間にか名前が変わっていますね。)
ということで、P牙狼月虹ノ旅人(牙狼MAXX)のボーダー算出を行いますが、中身は2つの過去記事の組み合わせなので、いきなり結果から記載したいと思います。
P牙狼MAXXのシミュレーション:シミュレータの作成方法
P大工の源さん 超韋駄天 LIGHTのボーダー算出:ボーダーの算出方法
今回のアジェンダはこちら。
1. 結果の確認
2. 今回作成したコード
にほんブログ村
2. 今回作成したコード
1. 結果の確認
P牙狼月虹ノ旅人(牙狼MAXX)のボーダー算出結果はこちら。
ボーダーは17.8[回/k]となりました。
項目 | 条件 |
---|---|
シミュレーション回数 | 通常時1000万回転 |
玉減り | 右打ち中の玉減り無 |
2. 今回作成したコード
ボーダー算出に使用したプログラムはこちら。
# coding: UTF-8 # 乱数作成用 import random # ボーダー算出用 import numpy as np # スランプグラフ描画用 import pylab # 試行回数 loop = 10000000 # 1kあたりの回転数の初期値 回転数 = 10 # 1k当りの回転数vs出率のデータ作成---ここから---- # 結果用の箱の準備 回転数リスト = [] 出率リスト = [] # 1k当りの回転数を30まで変更しながらシミュレーション while 回転数 <= 30: # 大当たり確率の設定(左打ち) 左3RRush = 319.7 / 0.50 左3R通常 = 319.7 / 0.50 # 乱数範囲の設定準備(左打ち) 左3RRush範囲 = round(65536 / 左3RRush) 左3R通常範囲 = round(65536 / 左3R通常) # 乱数範囲の設定(左打ち) 左3RRush範囲_下 = 1 左3RRush範囲_上 = 左3RRush範囲_下 + 左3RRush範囲 - 1 左3R通常範囲_下 = 左3RRush範囲_上 + 1 左3R通常範囲_上 = 左3R通常範囲_下 + 左3R通常範囲 - 1 # 大当たり確率の設定(右打ち) 右10RRush = 1.08 / 0.81 右10R通常 = 1.08 / 0.19 # 乱数範囲の設定準備(右打ち) 右10RRush範囲 = round(65536 / 右10RRush) 右10R通常範囲 = round(65536 / 右10R通常) # 乱数範囲の設定(右打ち) 右10RRush範囲_下 = 1 右10RRush範囲_上 = 右10RRush範囲_下 + 右10RRush範囲 - 1 右10R通常範囲_下 = 右10RRush範囲_上 + 1 右10R通常範囲_上 = 右10R通常範囲_下 + 右10R通常範囲 - 1 # 結果用の箱やカウンタの準備 Total = 0 # トータルの差玉を入れる ゲーム数 = 1 # 前回大当たりからの通常ゲーム数を入れる # ループ処理(loopで設定した回数だけシミュレーションを行う。) for i in range(loop): # 乱数の取得 rand = random.randint(1, 65536) # 遊タイムの処理 # 951回転から遊タイム突入。 if 950 < ゲーム数 < 951 + 200: # Rush中のゲーム数をカウント ゲーム数_Rush = 1 # Rush回数までループする処理 while ゲーム数_Rush <= 200: # 乱数の取得 rand2 = random.randint(1, 65536) # Rush付き10Rの振り分けだったとき if 右10RRush範囲_下 <= rand2 <= 右10RRush範囲_上: Total = Total + 1500 - 10 * 10 ゲーム数_Rush = 1 # 大当たりしたのでゲーム数を1に戻す ゲーム数 = 1 # 10R通常の振り分けだったとき elif 右10R通常範囲_下 <= rand2 <= 右10R通常範囲_上: Total = Total + 1500 - 10 * 10 ゲーム数_Rush = 1 # 大当たりしたのでゲーム数を1に戻す ゲーム数 = 1 # Rushを抜ける break # はずれのとき else: ゲーム数_Rush = ゲーム数_Rush + 1 # 遊タイム以外の処理 else: # 当り判定+連荘処理 # Rush付きの大当たりを引いた時の処理 if 左3RRush範囲_下 <= rand <= 左3RRush範囲_上: # 大当たりで獲得した玉数を加算(アタッカーに入れた玉数は減算する) Total = Total + 450 - 3 * 10 # 大当たりしたのでゲーム数を1に戻す ゲーム数 = 1 # Rush中の処理 # Rush中のゲーム数をカウント ゲーム数_Rush = 1 # Rush回数までループする処理 while ゲーム数_Rush <= 200: # 乱数の取得 rand2 = random.randint(1, 65536) # Rush付き10Rの振り分けだったとき if 右10RRush範囲_下 <= rand2 <= 右10RRush範囲_上: Total = Total + 1500 - 10 * 10 ゲーム数_Rush = 1 # 10R通常の振り分けだったとき elif 右10R通常範囲_下 <= rand2 <= 右10R通常範囲_上: Total = Total + 1500 - 10 * 10 ゲーム数_Rush = 1 # Rushを抜ける break # はずれのとき else: ゲーム数_Rush = ゲーム数_Rush + 1 # 通常当たりを引いた時の処理 elif 左3R通常範囲_下 <= rand <= 左3R通常範囲_上: # 大当たりで獲得した玉数を加算(アタッカーに入れた玉数は減算する) Total = Total + 450 - 3 * 10 # 大当たりしたのでゲーム数を1に戻す ゲーム数 = 1 # 前回大当たりからのゲーム数をカウント ゲーム数 = ゲーム数 + 1 # 1k当りの回転数ごとの出率を格納 回転数リスト.append(回転数) 出率リスト.append(Total / ((250 / 回転数) * loop) * 100) # 1k当りの回転数を増やす 回転数 = 回転数 + 1 # 1k当りの回転数vs出率のデータ作成---ここまで---- # ボーダー算出---ここから---- # 1k当りの回転数vs出率数を一次近似 近似 = np.polyfit(回転数リスト, 出率リスト, 1) # 一次方程式から出率が100になる回転数を算出 border = (100 - 近似[1]) / 近似[0] # グラフの描画 pylab.scatter(回転数リスト, 出率リスト, label="シミュ値") # 生データ 近似線 = np.poly1d(近似)(回転数リスト) # 近似式から近似線を計算 pylab.plot(回転数リスト, 近似線, label="近似線") # 一次近似したデータ pylab.scatter(border, 100, label="ボーダー:" + str(round(border, 1)) + "[回/k]") # ボーダー値 pylab.title("牙狼月虹(牙狼MAXX)ボーダー" + "\n" + "(ラッシュ中の玉減り無)", fontname="MS Gothic") pylab.xlabel("回転数[回/1k]", fontname="MS Gothic") pylab.ylabel("出率[%]", fontname="MS Gothic") pylab.legend(prop={"family":"MS Gothic"}) pylab.grid() pylab.show() # ボーダー算出---ここまで----
にほんブログ村
コメント
コメントを投稿