import random
import math
# Parameters
d = 6
cha = 5
def roll(Y,n=1):
if n==0:
return []
elif n==1:
return [random.randint(1,Y)]
else:
return roll(Y)+roll(Y,n-1)
def reroll(Y,n,c):
r = sorted(roll(Y,n))
c = min(c,len([x for x in r if x<=3])) # Number of rerolls
R = roll(Y,c)+r[c:]
return r,R
rep = 1000
data =[]
for n in range(40,41):
r,R=[],[]
for i in range(rep):
a,b = reroll(d,n,cha)
r+=a
R+=b
avgr = sum(r)/float(rep)
avgR = sum(R)/float(rep)
inc = (avgR/avgr-1)*100
print('{}\t{:.2f}\t{:.2f}\t{:.2f}'.format(n,avgr,avgR,inc))
# your code goes here
aW1wb3J0IHJhbmRvbQppbXBvcnQgbWF0aAogCiMgUGFyYW1ldGVycwpkID0gNgpjaGEgPSA1CiAKZGVmIHJvbGwoWSxuPTEpOgogICAgaWYgbj09MDoKICAgICAgICByZXR1cm4gW10KICAgIGVsaWYgbj09MToKICAgICAgICByZXR1cm4gW3JhbmRvbS5yYW5kaW50KDEsWSldCiAgICBlbHNlOgogICAgICAgIHJldHVybiByb2xsKFkpK3JvbGwoWSxuLTEpCiAKZGVmIHJlcm9sbChZLG4sYyk6CiAgICByID0gc29ydGVkKHJvbGwoWSxuKSkKICAgIGMgPSBtaW4oYyxsZW4oW3ggZm9yIHggaW4gciBpZiB4PD0zXSkpICMgTnVtYmVyIG9mIHJlcm9sbHMKICAgIFIgPSByb2xsKFksYykrcltjOl0KIAogICAgcmV0dXJuIHIsUgogCnJlcCA9IDEwMDAKZGF0YSA9W10KZm9yIG4gaW4gcmFuZ2UoNDAsNDEpOgogICAgcixSPVtdLFtdCiAgICBmb3IgaSBpbiByYW5nZShyZXApOgogICAgICAgIGEsYiA9IHJlcm9sbChkLG4sY2hhKQogICAgICAgIHIrPWEKICAgICAgICBSKz1iCiAgICBhdmdyID0gc3VtKHIpL2Zsb2F0KHJlcCkKICAgIGF2Z1IgPSBzdW0oUikvZmxvYXQocmVwKQogICAgaW5jID0gKGF2Z1IvYXZnci0xKSoxMDAKIAogICAgcHJpbnQoJ3t9XHR7Oi4yZn1cdHs6LjJmfVx0ezouMmZ9Jy5mb3JtYXQobixhdmdyLGF2Z1IsaW5jKSkKIyB5b3VyIGNvZGUgZ29lcyBoZXJl