
Originally Posted by
AmiableApkallu
Errr… 100 big hits should be at least 100 * 1200 = 120,000 damage. Due to indentation errors, I think you're summing only the critical hits. And I think you're not resetting some variables between loop iterations?
Thanks for double checking. Yes, I was forgetting to reset variables and probably had the indentations incorrect as well. I started over and I'm also seeing lower maximums with small hits now:
Code:
import random
big = 1200
sml = 400
crit = 0.5
rate = 0.25
crit_set = 0
big_sum = 0
sml_sum = 0
big_list = []
sml_list = []
atk_num = 100
atk_num_s = big/sml
tst_num = 1000
for k in range (tst_num):
big_sum = 0
#sml_sum = 0
for i in range (atk_num):
crit_check = random.random()
#print(crit_check)
if crit_check > rate:
crit_set = 0
else:
crit_set = 1
big_damage = big + big* crit * crit_set
#print("big damage: ", big_damage)
big_sum = big_sum + big_damage
i = i + 1
#print("big sum: ", big_sum)
big_average = big_sum/(atk_num)
#print("big average: ", big_average)
big_list.append(big_average)
#print("big list: ", big_list)
sml_sum = 0
for j in range (atk_num*3):
crit_check = random.random()
#print(crit_check)
if crit_check > rate:
crit_set = 0
else:
crit_set = 1
sml_damage = sml + sml* crit * crit_set
#print("small damage: ", sml_damage)
sml_sum = sml_sum + sml_damage
j = j + 1
#print("small sum: ", sml_sum)
sml_average = sml_sum/(atk_num)
#print("small average: ", sml_average)
sml_list.append(sml_average)
#print("small list: ", sml_list)
# i = i + 1
#k = k + 1
#print("big sum: ", big_sum)
big_average = big_sum/(atk_num)
#print("big average: ", big_average)
big_list.append(big_average)
#print("big list: ", big_list)
#print("small sum: ", sml_sum)
sml_average = sml_sum/(atk_num)
#print("small average: ", sml_average)
sml_list.append(sml_average)
#print("small list: ", sml_list)
print("Max of big attack logs is ", max(big_list))
print("Max of small attack logs is ", max(sml_list))
About 40 less. I expected a smaller difference, but this shows that it pays to do the math.