import numpy as np #Un'goro Numbers numcom=49 numrare=36 numepic=27 numlegend=23 class Count: def __init__(self): self.common=0 self.rare=0 self.epic=0 self.legend=0 self.goldcom=0 self.goldrare=0 self.goldepic=0 self.goldleg=0 self.packs=0 self.dust=0 def Progress(self): comneed=(2*numcom-self.common)*40 rarneed=(2*numrare-self.rare)*100 epicneed=(2*numepic-self.epic)*400 legneed=(numlegend-self.legend)*1600 dustneed=comneed+rarneed+epicneed+legneed diff=self.dust-dustneed if diff < 0: return 1 elif diff >=0: return 0 def PackInc(self): self.packs+=1 def Common(self): if np.random.rand() > self.common/numcom/2: self.common+=1 else: self.dust+=5 def Rare(self): if np.random.rand() > self.rare/numrare/2: self.rare+=1 else: self.dust+=20 def Epic(self): if np.random.rand() > self.epic/numepic/2: self.epic+=1 else: self.dust+=100 def Legend(self): if np.random.rand() > self.legend/numlegend: self.legend+=1 else: self.dust+=400 def Gcommon(self): self.dust+=50 def Grare(self): self.dust+=100 def Gepic(self): self.dust+=400 def Glegend(self): self.dust+=1600 def GenCard(stats): card=np.random.rand() if card < .701362: stats.Common() elif card-.701362 < .209809: stats.Rare() elif card-.911172 < .043960: stats.Epic() elif card-.955132 < .011262: stats.Legend() elif card-.966394 < .014714: stats.Gcommon() elif card-.981108 < .015441: stats.Grare() elif card-.996549 < .002361: stats.Gepic() elif card-.998910 < .001090: stats.Glegend() def OpenPack(stats): stats.PackInc() for i in range(5): GenCard(stats) def WriteResults(numpacks): with open("Results.txt","a") as file: file.write("{}\n".format(numpacks)) def Trial(): stats=Count() while stats.Progress(): OpenPack(stats) WriteResults(stats.packs) def RunSim(n): with open("Results.txt","w") as file: file.write("") for i in range(n): Trial() print("Complete") RunSim(100)