import random
win_req = 17
cons_req = 6
probability = 0.5
runs = 200000
def get_has_3cons(seq, win_req, cons_req):
cons_won = [0, 0]
score = [0, 0]
i = 0
while score[0] < win_req and score[1] < win_req:
score[seq[i]] += 1
cons_won[seq[i]] += 1
cons_won[1-seq[i]] = 0
if cons_won[0] >= cons_req or cons_won[1] >= cons_req:
return 1
i += 1
return 0
def gen(req):
seq = []
for i in range(0, 2*req-1):
winner = 1
if random.random() < probability:
winner = 0
seq.append(winner)
return seq
total_has = 0
total = 0
seq = gen(win_req)
while total < runs:
total += 1
if get_has_3cons(seq, win_req, cons_req):
total_has += 1
seq = gen(win_req)
print(total_has, total, 100.0*total_has/total, 100.0*(total-total_has)/total)
aW1wb3J0IHJhbmRvbQoKd2luX3JlcSA9IDE3CmNvbnNfcmVxID0gNgpwcm9iYWJpbGl0eSA9IDAuNQpydW5zID0gMjAwMDAwCgpkZWYgZ2V0X2hhc18zY29ucyhzZXEsIHdpbl9yZXEsIGNvbnNfcmVxKToKICAgIGNvbnNfd29uID0gWzAsIDBdCiAgICBzY29yZSA9IFswLCAwXQogICAgaSA9IDAKICAgIHdoaWxlIHNjb3JlWzBdIDwgd2luX3JlcSBhbmQgc2NvcmVbMV0gPCB3aW5fcmVxOgogICAgICAgIHNjb3JlW3NlcVtpXV0gKz0gMQogICAgICAgIGNvbnNfd29uW3NlcVtpXV0gKz0gMQogICAgICAgIGNvbnNfd29uWzEtc2VxW2ldXSA9IDAKICAgICAgICBpZiBjb25zX3dvblswXSA+PSBjb25zX3JlcSBvciBjb25zX3dvblsxXSA+PSBjb25zX3JlcToKICAgICAgICAgICAgcmV0dXJuIDEKICAgICAgICBpICs9IDEKICAgIHJldHVybiAwCgpkZWYgZ2VuKHJlcSk6CiAgICBzZXEgPSBbXQogICAgZm9yIGkgaW4gcmFuZ2UoMCwgMipyZXEtMSk6CiAgICAgICAgd2lubmVyID0gMQogICAgICAgIGlmIHJhbmRvbS5yYW5kb20oKSA8IHByb2JhYmlsaXR5OgogICAgICAgICAgICB3aW5uZXIgPSAwCiAgICAgICAgc2VxLmFwcGVuZCh3aW5uZXIpCiAgICByZXR1cm4gc2VxCgp0b3RhbF9oYXMgPSAwCnRvdGFsID0gMAoKc2VxID0gZ2VuKHdpbl9yZXEpCndoaWxlIHRvdGFsIDwgcnVuczoKICAgIHRvdGFsICs9IDEKICAgIGlmIGdldF9oYXNfM2NvbnMoc2VxLCB3aW5fcmVxLCBjb25zX3JlcSk6CiAgICAgICAgdG90YWxfaGFzICs9IDEKICAgIHNlcSA9IGdlbih3aW5fcmVxKQpwcmludCh0b3RhbF9oYXMsIHRvdGFsLCAxMDAuMCp0b3RhbF9oYXMvdG90YWwsIDEwMC4wKih0b3RhbC10b3RhbF9oYXMpL3RvdGFsKQ==