Dice rolling with lists
# # Roll a six-sided die 6000 times. import random frequency1 = 0 frequency2 = 0 frequency3 = 0 frequency4 = 0 frequency5 = 0 frequency6 = 0 for roll in range( 1, 6001 ): # 6000 die rolls face = random.randrange( 1, 7 ) if face == 1: # frequency counted frequency1 += 1 elif face == 2: frequency2 += 1 elif face == 3: frequency3 += 1 elif face == 4: frequency4 += 1 elif face == 5: frequency5 += 1 elif face == 6: frequency6 += 1 else: # simple error handling print ("should never get here!") print ("Face %13s" % "Frequency") print (" 1 %13d" % frequency1) print (" 2 %13d" % frequency2) print (" 3 %13d" % frequency3) print (" 4 %13d" % frequency4) print (" 5 %13d" % frequency5) print (" 6 %13d" % frequency6) ##>>> ##Face Frequency ## 1 1007 ## 2 1036 ## 3 1000 ## 4 1013 ## 5 928 ## 6 1016 ##>>>
The frequency table for rolling two dice:
################################################# # mrs.e # 10/22 # version 1 # Roll two six-sided diec 6000 times. # Find the sum of the two dice and keep # track of them and print them out after the # 6000 times # ################################################# import random def intro(): print ("Three Rolling Dice Frequency Program") print ("This program displays the frequencies") print ("of the sum of the faces of two dice") print ("when they are rolled 6000 times") def rollDice(): frequency2 = 0 frequency3 = 0 frequency4 = 0 frequency5 = 0 frequency6 = 0 frequency7 = 0 frequency8 = 0 frequency9 = 0 frequency10 = 0 frequency11 = 0 frequency12 = 0 for roll in range( 1, 6001 ): # 6000 die rolls face1 = random.randrange( 1, 7 ) face2 = random.randrange( 1, 7 ) totalface = face1 + face2 # do not use # facesSum = random.randrange( 2, 13 ) since this will give equal probability to each outcome # ... if totalface == 2: # frequency counted frequency2 += 1 elif totalface == 3: frequency3 += 1 elif totalface == 4: frequency4 += 1 elif totalface == 5: frequency5 += 1 elif totalface == 6: frequency6 += 1 elif totalface == 7: frequency7 += 1 elif totalface == 8: frequency8 += 1 elif totalface == 9: frequency9 += 1 elif totalface == 10: frequency10 += 1 elif totalface == 11: frequency11 += 1 elif totalface == 12: frequency12 += 1 else: # simple error handling print ("should never get here!") print ("Sum of Faces %13s" % "Frequency") print ("%3s %13d" % ("2",frequency2)) print ("%3s %13d" % ("3",frequency3)) print ("%3s %13d" % ("4",frequency4)) print ("%3s %13d" % ("5",frequency5)) print ("%3s %13d" % ("6",frequency6)) print ("%3s %13d" % ("7",frequency7)) print ("%3s %13d" % ("8",frequency8)) print ("%3s %13d" % ("9",frequency9)) print ("%3s %13d" % ("10",frequency10)) print ("%3s %13d" % ("11",frequency11)) print ("%3s %13d" % ("12",frequency12)) def main(): intro() rollDice() main()
The frequency table for rolling three dice:
################################################# # mrs.e # 10/22 # version 1 # Roll three six-sided diec 6000 times. # Find the sum of the three dice and keep # track of them and print them out after the # 6000 times # ################################################# import random def intro(): print ("Three Rolling Dice Frequency Program") print ("This program displays the frequencies") print ("of the sum of the faces of three dice") print ("when they are rolled 6000 times") def rollDice(): frequency3 = 0 frequency4 = 0 frequency5 = 0 frequency6 = 0 frequency7 = 0 frequency8 = 0 frequency9 = 0 frequency10 = 0 frequency11 = 0 frequency12 = 0 frequency13 = 0 frequency14 = 0 frequency15 = 0 frequency16 = 0 frequency17 = 0 frequency18 = 0 for roll in range( 1, 6001 ): # 6000 die rolls face1 = random.randrange( 1, 7 ) face2 = random.randrange( 1, 7 ) face3 = random.randrange( 1, 7 ) totalface = face1 + face2 + face3 # do not use # facesSum = random.randrange( 3, 19 ) since this will give equal probability to each outcome # ... if totalface == 3: # frequency counted frequency3 += 1 elif totalface == 4: frequency4 += 1 elif totalface == 5: frequency5 += 1 elif totalface == 6: frequency6 += 1 elif totalface == 7: frequency7 += 1 elif totalface == 8: frequency8 += 1 elif totalface == 9: frequency9 += 1 elif totalface == 10: frequency10 += 1 elif totalface == 11: frequency11 += 1 elif totalface == 12: frequency12 += 1 elif totalface == 13: frequency13 += 1 elif totalface == 14: frequency14 += 1 elif totalface == 15: frequency15 += 1 elif totalface == 16: frequency16 += 1 elif totalface == 17: frequency17 += 1 elif totalface == 18: frequency18 += 1 else: # simple error handling print ("should never get here!") print ("Sum of Faces %13s" % "Frequency") print ("%3s %13d" % ("3",frequency3)) print ("%3s %13d" % ("4",frequency4)) print ("%3s %13d" % ("5",frequency5)) print ("%3s %13d" % ("6",frequency6)) print ("%3s %13d" % ("7",frequency7)) print ("%3s %13d" % ("8",frequency8)) print ("%3s %13d" % ("9",frequency9)) print ("%3s %13d" % ("10",frequency10)) print ("%3s %13d" % ("11",frequency11)) print ("%3s %13d" % ("12",frequency12)) print ("%3s %13d" % ("13",frequency13)) print ("%3s %13d" % ("14",frequency14)) print ("%3s %13d" % ("15",frequency15)) print ("%3s %13d" % ("16",frequency16)) print ("%3s %13d" % ("17",frequency17)) print ("%3s %13d" % ("18",frequency18)) def main(): intro() rollDice() main()
Some of you want to use lists. Here is a good program with lists:
#Alex Ding #11/1 #2.7 #test print "This program calculates the frequencies of the sum of 3 die in 6000 rolls." frequency = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] import random def sumoffaces(): face1 = random.randrange(1,7) face2 = random.randrange(1,7) face3 = random.randrange(1,7) face = face1 + face2 + face3 return face def calc(face): if face == 3: frequency[0] += 1 elif face == 4: frequency[1] += 1 elif face == 5: frequency[2] += 1 elif face == 6: frequency[3] += 1 elif face == 7: frequency[4] += 1 elif face == 8: frequency[5] += 1 elif face == 9: frequency[6] += 1 elif face == 10: frequency[7] += 1 elif face == 11: frequency[8] += 1 elif face == 12: frequency[9] += 1 elif face == 13: frequency[10] += 1 elif face == 14: frequency[11] += 1 elif face == 15: frequency[12] += 1 elif face == 16: frequency[13] += 1 elif face == 17: frequency[14] += 1 elif face == 18: frequency[15] += 1 else: # simple error handling print "should never get here!" def printing(): face = 3 print ("Face %13s" % "Frequency") for face in range (3,19): print ("%4d%13d" % (face,frequency[face-3])) def main(): frequency1 = 0 frequency2 = 0 frequency3 = 0 frequency4 = 0 frequency5 = 0 frequency6 = 0 for roll in range(1,6001): face = sumoffaces() calc(face) printing() main() ##>>> ##This program calculates the frequencies of the sum of 3 die in 6000 rolls. ##Face Frequency ## 3 29 ## 4 76 ## 5 151 ## 6 275 ## 7 437 ## 8 617 ## 9 673 ## 10 755 ## 11 719 ## 12 687 ## 13 606 ## 14 399 ## 15 288 ## 16 178 ## 17 74 ## 18 36 ##>>>
Here is a shorter version:
################################################# # mrs.e # 10/22 # version 2 # Roll three six-sided diec 6000 times. # Find the sum of the three dice and keep # track of them and print them out after the # 6000 times # ################################################# import random frequency = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] def intro(): print ("Three Rolling Dice Frequency Program") print ("This program displays the frequencies") print ("of the sum of the faces of three dice") print ("when they are rolled 6000 times") def rollDice(): for roll in range( 1, 6001 ): # 6000 die rolls face1 = random.randrange( 1, 7 ) face2 = random.randrange( 1, 7 ) face3 = random.randrange( 1, 7 ) totalface = face1 + face2 + face3 frequency[totalface] +=1 print "Sum of Faces %13s" % "Frequency" for face in range(3,19): print ("%3d %13d" % (face,frequency[face])) def main(): intro() rollDice() main()
################################################### # # Adrian Hertel # Three dice rolls: 6000 times # python 2.7 # 11/1/2013 # ################################################## import random totals = [0] * 16 def increment(total): totals[total-3] += 1 def roll3Dice(): total = 0 for i in range (0,3): total += random.randrange( 1, 7 ) increment(total) def main(): for roll in range( 1, 6001 ): roll3Dice() print ("Sum %13s" % "Frequency") for x in range(0, len(totals)): print ("%3d %13d" % (x + 3, totals[x])) main() ##>>> ##Sum Frequency ## 3 19 ## 4 95 ## 5 169 ## 6 281 ## 7 400 ## 8 580 ## 9 715 ## 10 745 ## 11 765 ## 12 729 ## 13 560 ## 14 410 ## 15 272 ## 16 166 ## 17 72 ## 18 22 ##>>>
Let’s take a look at lists:
Homework: Use lists for your own rolling dice program. If your program already has a list and works, make it efficient. If you program is already efficient, make it even more efficient by eliminating these many variables:
face1 = random.randrange( 1, 7 ) face2 = random.randrange( 1, 7 ) face3 = random.randrange( 1, 7 ) totalface = face1 + face2 + face3 frequency[totalface] +=1