むるおか君のPythonパチンコシミュレーション

Pythonを使ってパチンコの新台解析やってます。たまに自分が処理したい作業のGUIも作ったり

Pythonによる仮面ライダー轟音の天井期待値算出シミュレーション方法

仮面ライダー轟音を天井まで50G刻みで期待値算出できるようにしました。

変数のkaitenrituを好きな回転数に変えたら

その回転数の期待値が出てきますのでお試しあれ。

# -*- coding: utf-8 -*-
"""
Created on Wed Jul  1 10:56:29 2020

@author: HOST1191
"""
import random
import statistics 
import collections
import matplotlib.pyplot as plt
import seaborn as sns

#仮面ライダー轟音振り分けデンチュー 
def furi():
    furir = random.randint(1,100)
    furideda =  0
    furiflg  =  0
    if  furir  >=  1  and  furir  <= 35:
        furideda +=  1400
        furiflg   =  0
    elif furir  >=  36  and  furir  <=  80:
        furideda  += 1400
        furiflg  +=  1
    elif  furir  >=  81  and  furir  <= 85:
        furideda  +=  280
        furiflg  =  0
    else:
        furideda  += 280
        furiflg  +=  1
    return  furideda,furiflg

#仮面ライダー轟音振り分けヘソ   

    
#仮面ライダー轟音連荘の関数定義
def renchan(kakuhen1,flg):
    ren   = 1
    suru  = 0
    jitan = 0
    st    = 0
    dedama  =  0
    while  suru  < 1:
        #転落抽選
        #確変
        if  kakuhen1  ==  0:
            tyusen1 = random.random()
            st  +=  1
            dedama  =  dedama  -  0.5
            if tyusen1 <= (1/74.7):
                ren  +=  1
                furideda,flg = furi() 
                dedama  +=  furideda
                st  =  0
                jitan  =  0
            else:
                if  st  >  120:
                    if  flg   ==  0:
                        kakuhen1  +=  1
                        jitan  =  0
                    else:
                        suru  +=  1
        #時短の処理
        else:
            #引き戻し抽選
            tyusen2 = random.random()
            jitan  +=  1
            dedama  =  dedama  -  0.5
            if  jitan  >=  124:
                suru  +=  1
            else:
                if  tyusen2  <=  (1/319.7):
                    ren  +=  1
                    furideda,flg =  furi()
                    dedama  +=  furideda
                    kakuhen1  =  0
                    jitan  =  0
                    st     =  0
#    print ("ren=",ren)          
    return  ren,dedama

#試行回数
sikou  =  10000
#千円当たりの回転数
kaitenritu =  16
#低確分母
bunbo1 =  319.7
#作図用
atarikai = []
dedama1 = []
bunbo1 =  319.7
sim1   =  0
sim2   =  0
atari = 0
suru  = 0
for  tenzyo  in  range(0,951,50):
    soudedama =  0
    for  a  in  range(1,sikou+1):
        suru  =  0
        sim1  =  0
        sim2  =  0
        while  suru  <  1: 
            tyusen1 = random.random()
#       天井到達時点
            if  sim1  ==  tenzyo:
                soudedama = soudedama  -  0.5
                if  tyusen1  <=  1/(bunbo1):
                    furideda,furiflg  =  furi()
                    soudedama  +=  furideda
                    ren,dedama  =  renchan(0,furiflg)
                    soudedama  +=  dedama
                    suru  +=  1
                else:
                    sim2  +=  1
                    if  sim2  >=  1200:
                        soudedama  +=  0
                        suru +=  1
            else:
                sim1  +=  1
                soudedama  =  soudedama  -  (250 / kaitenritu)
                if  tyusen1  <=  1/(bunbo1):
                    furiwake1  =  random.randint(1,100)
                    if  furiwake1 >= 1  and  furiwake1  <= 50:
                        soudedama  +=  420
                        ren,dedama = renchan(1,1)
                    elif  furiwake1  >= 51  and  furiwake1  <=  89:
                        soudedama  +=  420
                        ren,dedama  =  renchan(0,1)
                    elif  furiwake1  >=  90  and  furiwake1  <= 99:
                        soudedama  +=  420
                        ren,dedama  = renchan(0,0)
                    else:
                        soudedama  +=  1400
                        ren,dedama  =  renchan(0,0)
                    soudedama  +=  dedama
                    suru  +=  1
    dedama1.append("{0:.0f}".format((soudedama/sikou)*4))
    atarikai.append(tenzyo)
print  ("期待値=",dedama1)
print  ("天井まで=",atarikai)
#plt.plot(atarikai,dedama1)
#plt.show()