from random import * def playMatch(p): if random() <= p: return 3 else: return 0 def playEvent(r, p, gp = 0): points = 0 T8 = 0 T4 = 0 win = 0 for round in range(r): points += playMatch(p) if points >= (r-1)*3: T8 = 1 if gp == 1 and points >= (r-2)*3: T8 = 1 if T8 == 1: if playMatch(p) > 0: T4 = 1 if playMatch(p) > 0: if playMatch(p) > 0: win = 1 return (T8, T4, win) def simulate(p, numptqs, numpptqs, ptqrounds, pptqrounds, rptqrounds): n = 100000 ptqqual = 0 pptqqual = 0 rptq=0 for i in range(n): for j in range(numptqs): if playEvent(ptqrounds, p)[2] == 1: ptqqual += 1 break for j in range(numpptqs): if playEvent(pptqrounds, p)[2] == 1: rptq = 1 break if rptq == 1: if playEvent(rptqrounds, p)[1] == 1: pptqqual += 1 return (ptqqual/n, pptqqual/n)