Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- parameters
- local boss_count = 13
- local drop_chance = .5
- local upgrade_chance = .5
- local base_ilvl = 835
- local max_ilvl = 895
- local over_ilvl = 880
- local week_count = 26 -- 20 years
- local run_count = 10000
- math.randomseed(os.time())
- function rollItem(base_ilvl)
- local new_ilvl = base_ilvl
- while math.random() > upgrade_chance do
- new_ilvl = new_ilvl + 5
- if new_ilvl >= max_ilvl then
- break
- end
- end
- return new_ilvl
- end
- function getRaidDrops(boss_count)
- local drops = 0
- for i = 1, boss_count do
- if math.random() > drop_chance then
- drops = drops + 1
- end
- end
- return drops
- end
- local total_over_ilvl_count = 0
- local run = 1
- while run <= run_count do
- local run_over_ilvl_count = 0
- local week = 1
- while week <= week_count do
- local week_drops = {}
- local week_over_ilvl_count = 0
- for i = 1, getRaidDrops(boss_count) do
- local ilvl = rollItem(base_ilvl)
- if week_drops[ilvl] == nil then
- week_drops[ilvl] = 1
- else
- week_drops[ilvl] = week_drops[ilvl] + 1
- end
- if ilvl >= over_ilvl then
- week_over_ilvl_count = week_over_ilvl_count + 1
- end
- end
- --[[
- print("week #" .. week)
- for ilvl, count in pairs(week_drops) do
- print(ilvl .. " = " .. count)
- end
- print("--")
- --]]
- week = week + 1
- run_over_ilvl_count = run_over_ilvl_count + week_over_ilvl_count
- end
- print("Week over ilvl total = " .. run_over_ilvl_count)
- total_over_ilvl_count = total_over_ilvl_count + run_over_ilvl_count
- run = run + 1
- end
- print("Average max ilvl = " .. (total_over_ilvl_count/run_count))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement