Pフィーバー戦姫絶唱シンフォギア2 1/230VER.のオスイチボーダー

お世話になっております、スログラミングです。

Pフィーバー戦姫絶唱シンフォギア2 1/230VER.ということで、シンフォ2に遊タイムがついて、確率が重くなったバージョンですね。
大当り後685回消化で突入ということで、遠からずも近からずといった感じですが、これが遊タイムを無視したときにどのくらいボーダーに効いてくるのかってところですね。

ということで、遊タイムを無視(天井を無視)したボーダー情報=オスイチボーダーを算出してみました。

目次

0. オスイチボーダーとは

オスイチボーダーとは、天井を無視(遊タイムを無視)した場合のボーダー

オスイチ:座って1回転目、または極めて少ない回転数で当たること
ボーダー:理論上の損益分岐点
から勝手に作成した造語。

オスイチを繰り返した場合、特別な場合を除いては遊タイムの恩恵にあずかれないことから。

ちなみに、この遊び方をする人は試行回数が少ない(週1で仕事帰りに1万勝負とか)と思われるので、この数値に収束することは滅多にないと思います。
あくまで気休め程度で参考にしてください。

1. Pフィーバー戦姫絶唱シンフォギア2 1/230VER.のオスイチボーダー

オスイチボーダーは20.6くらいです。
月マイナス1万くらいを目指すなら、千円Sが15くらいの台を週1回1万勝負って感じですね。


2. 今回作成したコード

オスイチボーダー算出に使用したプログラムはこちら。

    # coding: UTF-8
    # 乱数作成用
    import random
    # ボーダー算出用
    import numpy as np
    # スランプグラフ描画用
    import pylab
    
    # 試行条件の設定---ここから----
    
    # 試行回数
    loop = 1000000
    # 千円Sの設定範囲
    千円S_最小 = 10
    千円S_最大 = 30
    # 右打ち中の1回転当りの玉減り()
    玉減り = 0.1
    # ラウンド間のこぼし玉
    こぼし玉 = 3
    
    # 大当たり確率の設定(左打ち)
    左10R = 230.0 / 0.01
    左3R = 230.0 / 0.99
    
    # 乱数範囲の設定準備(左打ち)
    左10R範囲 = round(65536 / 左10R)
    左3R範囲 = round(65536 / 左3R)
    
    # 乱数範囲の設定(左打ち)
    左10R範囲_下 = 1
    左10R範囲_上 = 左10R範囲_下 + 左10R範囲 - 1
    左3R範囲_下 = 左10R範囲_上 + 1
    左3R範囲_上 = 左3R範囲_下 + 左3R範囲 - 1
    
    # 大当たり確率の設定(右打ち)
    右10R1 = 7.7 / 0.10
    右10R2 = 7.7 / 0.40
    右7R = 7.7 / 0.02
    右6R = 7.7 / 0.03
    右3R = 7.7 / 0.45
    
    # 乱数範囲の設定準備(右打ち)
    右10R1範囲 = round(65536 / 右10R1)
    右10R2範囲 = round(65536 / 右10R2)
    右7R範囲 = round(65536 / 右7R)
    右6R範囲 = round(65536 / 右6R)
    右3R範囲 = round(65536 / 右3R)
    
    # 乱数範囲の設定(右打ち)
    右10R1範囲_下 = 1
    右10R1範囲_上 = 右10R1範囲_下 + 右10R1範囲 - 1
    右10R2範囲_下 = 右10R1範囲_上 + 1
    右10R2範囲_上 = 右10R2範囲_下 + 右10R2範囲 - 1
    右7R範囲_下 = 右10R2範囲_上 + 1
    右7R範囲_上 = 右7R範囲_下 + 右7R範囲 - 1
    右6R範囲_下 = 右7R範囲_上 + 1
    右6R範囲_上 = 右6R範囲_下 + 右6R範囲 - 1
    右3R範囲_下 = 右6R範囲_上 + 1
    右3R範囲_上 = 右3R範囲_下 + 右3R範囲 - 1
    
    # 試行条件の設定---ここまで----
    
    # 1k当りの回転数vs出率のデータ作成---ここから----
    # 結果用の箱やカウンタの準備
    回転数リスト = []
    出率リスト = []
    
    # 1k当りの回転数を30まで変更しながらシミュレーション
    for 回転数 in range(千円S_最小, 千円S_最大 + 1):
    
        # トータルの差玉を入れる
        Total = 0
    
        # ループ処理(loopで設定した回数だけシミュレーションを行う。)
        for i in range(loop):
            # 乱数の取得
            rand = random.randint(1, 65536)
    
            # 当り判定+連荘処理
            # 大当たりを引いた時の処理
            if 左10R範囲_下 <= rand <= 左3R範囲_上:
                if 左10R範囲_下 <= rand <= 左10R範囲_上:
                    # 大当たりで獲得した玉数を加算(アタッカーに入れた玉数は減算する)
                    Total = Total + 550 - 5 * (10 + こぼし玉)
                    # 時短回数を99回(+残保留4個)に設定
                    時短回数 = 99 + 4
                elif 左3R範囲_下 <= rand <= 左3R範囲_上:
                    # 大当たりで獲得した玉数を加算(アタッカーに入れた玉数は減算する)
                    Total = Total + 450 - 3 * (10 + こぼし玉)
                    # 時短回数を1回(+残保留4個)に設定
                    時短回数 = 1 + 4
    
                # 時短中の処理
    
                # 時短回数がなくなるまでループする処理
                while 時短回数 > 0:
                    # 乱数の取得
                    rand2 = random.randint(1, 65536)
    
                    # RUSH中の玉減り分を減らす
                    Total = Total - 玉減り
    
                    # 10R(時短99回)の振り分けだったとき
                    if 右10R1範囲_下 <= rand2 <= 右10R1範囲_上:
                        Total = Total + 1500 - 10 * (10 + こぼし玉)
                        時短回数 = 99 + 4
                    # 10R(時短7回)の振り分けだったとき
                    elif 右10R2範囲_下 <= rand2 <= 右10R2範囲_上:
                        Total = Total + 1500 - 10 * (10 + こぼし玉)
                        時短回数 = 7 + 4
                    # 7Rの振り分けだったとき
                    elif 右7R範囲_下 <= rand2 <= 右7R範囲_上:
                        Total = Total + 1050 - 7 * (10 + こぼし玉)
                        時短回数 = 7 + 4
                    # 6Rの振り分けだったとき
                    elif 右6R範囲_下 <= rand2 <= 右6R範囲_上:
                        Total = Total + 900 - 6 * (10 + こぼし玉)
                        時短回数 = 7 + 4
                    # 3Rの振り分けだったとき
                    elif 右3R範囲_下 <= rand2 <= 右3R範囲_上:
                        Total = Total + 450 - 3 * (10 + こぼし玉)
                        時短回数 = 7 + 4
                    # はずれのとき
                    else:
                        時短回数 = 時短回数 - 1
    
        # 1k当りの回転数ごとの出率を格納
        回転数リスト.append(回転数)
        出率リスト.append(Total / ((250 / 回転数) * loop) * 100)
    
    # 1k当りの回転数vs出率のデータ作成---ここまで----
    
    # ボーダー算出---ここから----
    # 1k当りの回転数vs出率数を一次近似
    近似 = np.polyfit(回転数リスト, 出率リスト, 1)
    
    # 一次方程式から出率が100%になる回転数を算出
    border = (100 - 近似[1]) / 近似[0]
    # ボーダー算出---ここまで----
    
    # グラフの描画(ボーダー情報)
    pylab.figure(figsize=(6, 7))
    pylab.subplot(2, 1, 1)
    pylab.scatter(回転数リスト, 出率リスト, label="シミュ値")  # 生データ
    
    近似線 = np.poly1d(近似)(回転数リスト)  # 近似式から近似線を計算
    pylab.plot(回転数リスト, 近似線, label="近似線")  # 一次近似したデータ
    
    pylab.scatter(border, 100, label="ボーダー:" + str(round(border, 1)) + "[回/k]")  # ボーダー値
    
    pylab.title("シンフォギア2 1/230VER.のオスイチボーダー" + "\n" + "(右打ちの玉減り:" + str(玉減り) + "[玉/回], ラウンド間のこぼし玉:" + str(こぼし玉) + "[個])", fontname="MS Gothic")
    pylab.xlabel("回転数[回/1k]", fontname="MS Gothic")
    pylab.ylabel("出率[%]", fontname="MS Gothic")
    pylab.legend(prop={"family": "MS Gothic"})
    pylab.grid()
    
    # 期待収支の計算
    期待収支 = []
    for i, j in zip(回転数リスト, 近似線):
        期待収支.append((2500 * j / 100 - 2500) * 4)
        print(i, (2500 * j / 100 - 2500) * 4)
    
    # グラフの描画(期待収支)
    pylab.subplot(2, 1, 2)
    pylab.plot(回転数リスト, 期待収支)  # 期待収支のデータ
    pylab.title("1万円期待収支", fontname="MS Gothic")
    pylab.xlabel("回転数[回/1k]", fontname="MS Gothic")
    pylab.ylabel("1万収支[円]", fontname="MS Gothic")
    pylab.grid()
    
    pylab.tight_layout()
    pylab.show()


コメント

このブログの人気の投稿

【WEBアプリ】Sキングハナハナ-30のベル確率予想&ベル確率逆算ツール&設定判別ツール

【WEBアプリ】ハナハナホウオウ天翔のベル確率を差枚数から逆算するツール

【WEBアプリ】ハナハナホウオウ天翔の設定判別ツール