Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using Random
- using Statistics
- rng = MersenneTwister(1234);
- dmg_roll = [3,4,6,8,10,12]
- dmg_bonus = 1:15
- AC_minus_atk = -30:0
- NSims = 10000
- res_var_1 = zeros(length(dmg_roll), length(dmg_bonus), length(AC_minus_atk)) # 3 single
- res_var_2 = zeros(length(dmg_roll), length(dmg_bonus), length(AC_minus_atk)) # single + power
- res_var_3 = zeros(length(dmg_roll), length(dmg_bonus), length(AC_minus_atk)) # power + single
- function simAttacks(AC_m_atk, dmg_roll, roll_count, dmg_bonus, NSims)
- avg_dmg = 0
- for n in 1:NSims
- roll = rand(rng, 1:20)
- if (roll) >= AC_m_atk
- if ((roll-10) >= AC_m_atk) || (roll == 20)
- for i in 1:roll_count
- avg_dmg += rand(rng, 1:dmg_roll)+dmg_bonus
- end
- end
- for i in 1:roll_count
- avg_dmg += rand(rng, 1:dmg_roll)+dmg_bonus
- end
- end
- end
- avg_dmg /= NSims
- return avg_dmg
- end
- for (dmgi,dmg) in enumerate(dmg_roll)
- for (dmgbi,dmg_bonus) in enumerate(dmg_bonus)
- for (ACi,AmC) in enumerate(AC_minus_atk)
- res_var_1[dmgi, dmgbi, ACi] = simAttacks(AmC, dmg, 1, dmg_bonus, NSims) +
- simAttacks(AmC+5, dmg, 1, dmg_bonus, NSims) +
- simAttacks(AmC+10, dmg, 1, dmg_bonus, NSims)
- res_var_2[dmgi, dmgbi, ACi] = simAttacks(AmC, dmg, 1, dmg_bonus, NSims) +
- simAttacks(AmC+5, dmg, 2, dmg_bonus, NSims)
- res_var_3[dmgi, dmgbi, ACi] = simAttacks(AmC, dmg, 2, dmg_bonus, NSims) +
- simAttacks(AmC+10, dmg, 1, dmg_bonus, NSims)
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement