Advertisement
Guest User

Untitled

a guest
Apr 14th, 2016
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.86 KB | None | 0 0
  1. from random import randint
  2.  
  3. def divideBy2(decNumber):
  4. remstack = []
  5.  
  6. while decNumber > 0:
  7. rem = decNumber % 2
  8. remstack.append(rem)
  9. decNumber = decNumber // 2
  10.  
  11. binString = ""
  12. while len(remstack) > 0:
  13. binString = binString + str(remstack.pop())
  14.  
  15. return binString
  16.  
  17. def sevensea2roller(rolls):
  18. dn = len(rolls)
  19. binary = [0]*dn
  20. result = 0
  21. unusedd = rolls[:]
  22. actived = [0]*dn
  23. maxv = 0
  24. curv = 0
  25. for i in range(2**dn):
  26. a = str(divideBy2(i))
  27. unusedd = rolls[:]
  28. actived = [0]*dn
  29. for j in range(1,len(a)+1):
  30. binary[-j] = int(a[-j])
  31. actived = [a*b for a,b in zip(rolls,binary)]
  32. if sum(actived) >= 10:
  33. unusedd = [a-b for a,b in zip(unusedd,actived)]
  34. while 0 in unusedd:
  35. unusedd.remove(0)
  36. if len(unusedd)>0:
  37. curv = 1 + sevensea2roller(unusedd)
  38. else:
  39. curv = 1
  40. maxv = max(maxv,curv)
  41. return maxv
  42.  
  43.  
  44. #print(sevensea2roller([10,10,3,4,5]))
  45.  
  46. rolls = 10000 #this is the number of times the dice are rolled to calculate the distribution
  47. dice = 5 #this is the number of dice rolled.
  48. results = [0]*(dice+1)
  49. atleast = [0]*(dice+1)
  50. nums = [0]*(dice+1)
  51.  
  52. for i in range(rolls):
  53. rolledd = [0]*dice
  54. for j in range(dice):
  55. rolledd[j] = randint(1,10)
  56. a = sevensea2roller(rolledd)
  57. results[a] = results[a]+1
  58.  
  59. for i in range(len(results)):
  60. results[i] = results[i]/rolls
  61. nums[i] = i
  62.  
  63. atleast[-1] = results[-1]
  64.  
  65. for i in range(2,len(atleast)+1):
  66. atleast[-i] = results[-i]+atleast[1-i]
  67.  
  68. print('Chance of getting exactly/Chance of getting at least:')
  69. print(nums)
  70. print(results)
  71. print(atleast)
  72. print('Expected value:')
  73. print(sum([a*b for a,b in zip(nums,results)]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement