Advertisement
Guest User

Untitled

a guest
Mar 29th, 2020
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Julia 1.71 KB | None | 0 0
  1. using Random
  2. using Statistics
  3. rng = MersenneTwister(1234);
  4. dmg_roll = [3,4,6,8,10,12]
  5. dmg_bonus = 1:15
  6. AC_minus_atk = -30:0
  7. NSims = 10000
  8.  
  9. res_var_1 = zeros(length(dmg_roll), length(dmg_bonus), length(AC_minus_atk)) # 3 single
  10. res_var_2 = zeros(length(dmg_roll), length(dmg_bonus), length(AC_minus_atk)) # single + power
  11. res_var_3 = zeros(length(dmg_roll), length(dmg_bonus), length(AC_minus_atk)) # power + single
  12.  
  13. function simAttacks(AC_m_atk, dmg_roll, roll_count, dmg_bonus, NSims)
  14.     avg_dmg = 0
  15.     for n in 1:NSims
  16.         roll = rand(rng, 1:20)
  17.         if (roll) >= AC_m_atk
  18.             if ((roll-10) >= AC_m_atk) || (roll == 20)
  19.                 for i in 1:roll_count
  20.                     avg_dmg += rand(rng, 1:dmg_roll)+dmg_bonus
  21.                 end
  22.             end
  23.             for i in 1:roll_count
  24.                 avg_dmg += rand(rng, 1:dmg_roll)+dmg_bonus
  25.             end
  26.         end
  27.     end
  28.     avg_dmg /= NSims
  29.     return avg_dmg
  30. end
  31.  
  32. for (dmgi,dmg) in enumerate(dmg_roll)
  33.     for (dmgbi,dmg_bonus) in enumerate(dmg_bonus)
  34.         for (ACi,AmC) in enumerate(AC_minus_atk)
  35.                 res_var_1[dmgi, dmgbi, ACi] = simAttacks(AmC, dmg, 1, dmg_bonus, NSims) +
  36.                                      simAttacks(AmC+5, dmg, 1, dmg_bonus, NSims) +
  37.                                      simAttacks(AmC+10, dmg, 1, dmg_bonus, NSims)
  38.                 res_var_2[dmgi, dmgbi, ACi] = simAttacks(AmC, dmg, 1, dmg_bonus, NSims) +
  39.                                      simAttacks(AmC+5, dmg, 2, dmg_bonus, NSims)
  40.                 res_var_3[dmgi, dmgbi, ACi] = simAttacks(AmC, dmg, 2, dmg_bonus, NSims) +
  41.                                      simAttacks(AmC+10, dmg, 1, dmg_bonus, NSims)
  42.         end
  43.     end
  44. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement