DPS予想5

この前作ったシミュレータをクリダメ分も計算するように改良してみた。
プログラムはこんな感じ

N = 100000  # 実験回数
sec = 2*60  # 時間 (sec)

d1 = [295,305]                # 通常攻撃ダメ
d2 = [1053*2, 1083*2]         # SSダメ
q  = 0.15*(1+0.24+0.25+0.05)  # SS発動率
sp = 0                        # 攻撃速度上昇

cr = 0.8                      # (実際の)クリ率
cd = 110+7                    # クリダメ増 (%)


n = (sec/(1.3*13/16/(1+sp*0.01))).to_i
cri=(150+cd)*0.01

$frand=Random.new()
def occ(q)
  $frand.rand(1.0) < q
end

def dmg(atk, na, nb, ra, rb, q, cr, cri)
  sum = 0
  atk.times do
    dm1 =  rand(na..nb)              # 通常ダメ
    dm1 =(dm1*cri).to_i if occ(cr)   # クリ
    sum += dm1
    if occ(q) then
      dm2 = rand(ra..rb)             # リアクションダメ
      dm2 =(dm2*cri).to_i if occ(cr) # クリ
      sum += dm2
    end
  end
  sum
end


result= N.times.map { dmg(n, *d1, *d2, q, cr, cri) }

result.each do |d|
  print "#{d}\n"
end

結果

それで動かしてみた結果がこれ。
f:id:ochanikki:20190128233001p:plain
横軸が2分間の総ダメで、縦軸がその頻度。以前に比べて分布の形がきれいな気がする。
20万ぐらいが平均で、16万 - 26万に大体収まる感じかな。

カーラで実際に測定してみるのはまた後日。