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 = 100
data =[]
for n in range(1,11):
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))