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()