Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from random import randint
- def divideBy2(decNumber):
- remstack = []
- while decNumber > 0:
- rem = decNumber % 2
- remstack.append(rem)
- decNumber = decNumber // 2
- binString = ""
- while len(remstack) > 0:
- binString = binString + str(remstack.pop())
- return binString
- def sevensea2roller(rolls):
- dn = len(rolls)
- binary = [0]*dn
- result = 0
- unusedd = rolls[:]
- actived = [0]*dn
- maxv = 0
- curv = 0
- for i in range(2**dn):
- a = str(divideBy2(i))
- unusedd = rolls[:]
- actived = [0]*dn
- for j in range(1,len(a)+1):
- binary[-j] = int(a[-j])
- actived = [a*b for a,b in zip(rolls,binary)]
- if sum(actived) >= 10:
- unusedd = [a-b for a,b in zip(unusedd,actived)]
- while 0 in unusedd:
- unusedd.remove(0)
- if len(unusedd)>0:
- curv = 1 + sevensea2roller(unusedd)
- else:
- curv = 1
- maxv = max(maxv,curv)
- return maxv
- #print(sevensea2roller([10,10,3,4,5]))
- rolls = 10000 #this is the number of times the dice are rolled to calculate the distribution
- dice = 5 #this is the number of dice rolled.
- results = [0]*(dice+1)
- atleast = [0]*(dice+1)
- nums = [0]*(dice+1)
- for i in range(rolls):
- rolledd = [0]*dice
- for j in range(dice):
- rolledd[j] = randint(1,10)
- a = sevensea2roller(rolledd)
- results[a] = results[a]+1
- for i in range(len(results)):
- results[i] = results[i]/rolls
- nums[i] = i
- atleast[-1] = results[-1]
- for i in range(2,len(atleast)+1):
- atleast[-i] = results[-i]+atleast[1-i]
- print('Chance of getting exactly/Chance of getting at least:')
- print(nums)
- print(results)
- print(atleast)
- print('Expected value:')
- print(sum([a*b for a,b in zip(nums,results)]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement