def GetService(): # # ------------------------------ # * generate the next service time # * ------------------------------ # */ selectStream(1) return (Uniform(1.0, 2.0))
def GetFailure(): # # ------------------------------------------------ # * generate the operational time until next failure # * ------------------------------------------------ # */ selectStream(0) return (Exponential(100.0))
def GetNumCharacters(): # --------------------------------- # * generate the number of characters # * --------------------------------- # */ selectStream(3) return (Equilikely(50, 300))
def GetService(): # -------------------------------------------- # * generate the next service time with rate 1/6 # * -------------------------------------------- # */ selectStream(1) return (Uniform(2.0, 10.0))
def GetService(): # -------------------------------------------- # * generate the next service time with rate 2/3 # * -------------------------------------------- # */ selectStream(1) return (Erlang(5, 0.3))
def GetLag(): # ------------------------------ # * generate a delivery lag (time) # * ------------------------------ # */ selectStream(1) return (Uniform(0.0, 1.0))
def GetThinkTime(): # ---------------------------- # * generate the next think time # * ---------------------------- # */ selectStream(0) return (Uniform(0.0, 10.0))
def GetKeystrokeTime(): # ------------------------------- # * generate the next keystroke time # * ------------------------------- # */ selectStream(1) return (Uniform(0.15, 0.35))
def GetNumKeystrokes(): # --------------------------------- # * generate the number of keystrokes # * --------------------------------- # */ selectStream(2) return (Equilikely(5, 15))
def GetArrival(): # --------------------------------------------- # * generate the next arrival time, with rate 1/2 # * --------------------------------------------- # */ global arrivalTemp selectStream(0) arrivalTemp += Exponential(2.0) return (arrivalTemp)
def GetDemand(): # -------------------------------------------------------------- # * generate the next demand instance (time) with rate 30 per time # * interval and exactly one unit of demand per demand instance # * -------------------------------------------------------------- # */ global tempTime selectStream(0) tempTime += Exponential(1.0 / 30.0) return (tempTime)
def intri(a,b,c): selectStream(0) u = random() variate = 0 if (u < (c-a)/(b-a)): variate = a + pow((u*(b-a)*(c-a)),.5) else: variate = b - pow(((1-u)*(b-a)*(b-c)), .5) return(variate)
def cotri(a,b,c): selectStream(2) p1 = (c-a)/(b-a) u = random() variate = 0 if (u < p1): variate = a + (c-a)*pow(random(),.5) else: variate = b - (b-c)*pow((1-random()),.5) return(variate)
def GetDemand(amount): # -------------------------------------------------------------- # * generate a demand instance with rate 120 # * and generate a corresponding demand amount # * -------------------------------------------------------------- # */ global tempTime selectStream(0) tempTime += Exponential(1.0 / 120.0) selectStream(2) amount[0] = Geometric(0.2) return (tempTime)
def artri(a,b,c): selectStream(1) temp=0 while(temp==0): x = a + (b - a) *random() # gen U(a,b) for x */ S = c*random() # use mode for majorizing fn */ if(x <= c): test = (2*x - 2*a)/((b-a)*(c-a)) else: test = (2*b - 2*x)/((b-a)*(b-c)) if (S <= test): return(x)
# * --------------------------------------------------- # */ return (-m * log(1.0 - random())) def Uniform(a,b): # -------------------------------------------- # * generate a Uniform random variate, use a < b # * -------------------------------------------- # */ return (a + (b - a) * random()) ################################################## plantSeeds(123456789) selectStream(0) for i in range(0,1000): print("{0:f}".format(Exponential(1))) # C output (last 10 rows): # 1.276245 # 0.466973 # 0.053791 # 2.774928 # 0.116793 # 2.878659 # 1.149758 # 2.682214 # 1.230311