import random
import os
import numpy as np
standard=["Bronya",
"Gepard",
"Bailu",
"Welt",
"Clara",
"Himeko",
"Yanqing",
"Promo"]
limited=["Promo"]
pullcount = []
_rate5 = 0.006 #0.6%
_pity5 = 73
guaranteed = 0
counter5=1
i=0
promoCount=0
standardCount=0
run = 0
while (i < pow(2,16)):
pulls=1
while(run==0):
x = random.randint(0,1000)
prob5 = _rate5+max(0,(counter5-_pity5)*10*_rate5)
if (x < (prob5*1000)):
coinflip = random.randint(0,1)
if (coinflip==0 and guaranteed == 0):
drop = random.choice(standard)
if (drop == "Promo"):
promoCount+=1
counter5=1
pullcount.append(pulls)
break
else:
standardCount+=1
guaranteed+=1
counter5=1
else:
drop = random.choice(limited)
promoCount+=1
counter5=1
if (guaranteed==1):
guaranteed=0
pullcount.append(pulls)
break
else:
counter5+=1
pulls+=1
i+=1
suma=promoCount+standardCount
porcentajePromo=(promoCount/suma)*100
porcentajeStandard=(standardCount/suma)*100
pullcount_sorted = np.sort(np.array(pullcount))
print("- HSR System, 56/44 -")
print("Promo character amount: ", promoCount, ",",round(porcentajePromo,4),"%")
print("Standard character amount: ",standardCount,",",round(porcentajeStandard,4),"%")
print("Mean pulls: ",np.mean(pullcount_sorted))
print("Median pulls: ",np.median(pullcount_sorted))
print("Standard Deviation: ",np.std(pullcount_sorted))
print("Min: ",np.min(pullcount_sorted),"\nMax: ",np.max(pullcount_sorted))
print("Percentiles: \n1%: ",np.percentile(pullcount_sorted,1),
"\n5%: ",np.percentile(pullcount_sorted,5),
"\n10%: ",np.percentile(pullcount_sorted,10),
"\n15%: ",np.percentile(pullcount_sorted,15),
"\n20%: ",np.percentile(pullcount_sorted,20),
"\n25%: ",np.percentile(pullcount_sorted,25),
"\n30%: ",np.percentile(pullcount_sorted,30),
"\n35%: ",np.percentile(pullcount_sorted,35),
"\n40%: ",np.percentile(pullcount_sorted,40),
"\n45%: ",np.percentile(pullcount_sorted,45),
"\n50%: ",np.percentile(pullcount_sorted,50),
"\n55%: ",np.percentile(pullcount_sorted,55),
"\n60%: ",np.percentile(pullcount_sorted,60),
"\n65%: ",np.percentile(pullcount_sorted,65),
"\n70%: ",np.percentile(pullcount_sorted,70),
"\n75%: ",np.percentile(pullcount_sorted,75),
"\n80%: ",np.percentile(pullcount_sorted,80),
"\n85%: ",np.percentile(pullcount_sorted,85),
"\n90%: ",np.percentile(pullcount_sorted,90),
"\n95%: ",np.percentile(pullcount_sorted,95),
"\n99%: ",np.percentile(pullcount_sorted,99),
"\n100%: ",np.percentile(pullcount_sorted,100))
np.savetxt("results.txt", pullcount_sorted, fmt='%d')
os.system("pause")
os.system("pause")