## ## This simulates powerball drawings. ## Scroll down to the variables section before you run the simulation. ## ## Setting playuntiljackpot to true will freeze the computer for possibly ## several hours! ## ## Written by BodaciousBrian ## import random class ticket(): ## sets up the ticket object def __init__(self): self.red = 0 self.white = [0, 0, 0, 0, 0] self.prizemoney = 0 self.spent = 0 self.lost = 0 self.won = 0 self.one = 0 self.two = 0 self.three = 0 self.four = 0 self.five = 0 self.six = 0 self.seven = 0 self.eight = 0 self.nine = 0 def prizewon(wc, rc, pp, ticket, jp): ## this checks the ticket and compares to if wc == 0 and rc == False: ## the lotto numbersto determine winners ticket.lost += 1 return if wc == 1 and rc == False: ticket.lost += 1 return if wc == 2 and rc == False: ticket.lost += 1 return if wc == 0 and rc == True: ticket.won += 1 ticket.one += 1 ticket.prizemoney += 3 * pp return if wc == 1 and rc == True: ticket.won += 1 ticket.two += 1 ticket.prizemoney += 4 * pp return if wc == 2 and rc == True: ticket.won += 1 ticket.three += 1 ticket.prizemoney += 7 * pp return if wc == 3 and rc == False: ticket.won += 1 ticket.four += 1 ticket.prizemoney += 7 * pp return if wc == 3 and rc == True: ticket.won += 1 ticket.five += 1 ticket.prizemoney += 100 * pp return if wc == 4 and rc == False: ticket.won += 1 ticket.six += 1 ticket.prizemoney += 100 * pp return if wc == 4 and rc == True: ticket.won += 1 ticket.seven += 1 ticket.prizemoney += 10000 * pp return if wc == 5 and rc == False: ticket.won += 1 ticket.eight += 1 ticket.prizemoney += 200000 * pp return if wc == 5 and rc == True: ticket.won += 1 ticket.nine += 1 ticket.prizemoney += jp return def whiteballgen(): #generates the white ball retlist = [] while len(retlist) <= 4: #be sure to only get 5 numbers x = random.randint(1, 55) if retlist.count(x) == 1: #removes duplicates continue else: #no duplicates found, add it and continue retlist.append(x) return retlist #return the list of numbers def redballgen(): #generates the red ball x = random.randint(1, 42) return x def powerplaygen(): #i know this is weird, but this is how idaho state lotto retint = 0 #does this picks a random number, 2, 3, 4, or 5. x = random.randint(1, 16) if x == 1 or x == 2 or x == 3 or x == 4: retint = 2 if x == 5 or x == 6 or x == 7 or x == 8: retint = 3 if x == 9 or x == 10 or x == 11 or x == 12: retint = 4 if x == 13 or x == 14 or x == 15 or x == 16: retint = 5 return retint def correctwhite(ticket, lotto): ## compares ticket to lotto to see matched = 0 ## how many white balls match for i in lotto: if i in ticket: matched += 1 return matched def correctred(ticket, lotto): ##checks to see if the powerball is correct if ticket == lotto: return True else: return False ############################## ######### variables ########## ############################## newticket = True ##use the same random ticket every time? powerplay = False ##toggles powerplay function ticketprice = 1 ##price that you would pay at the store for a lotto ticket powerplayprice = 1 ##price you pay to activate power play jackpot = 41000000 ##current jackpot timestoplay = 100000 ## number of cycles to run the simulation playuntiljackpot = False ## run until you win(freezes for a long time) ############################## ## program start: player = ticket() player.white = whiteballgen() player.red = redballgen() lotto = ticket() powerp = 0 counter = 0 if playuntiljackpot == False: while counter < timestoplay: counter += 1 player.spent += ticketprice if powerplay == False: powerp = 1 else: powerp = powerplaygen() player.spent += powerplayprice if newticket == True: player.white = whiteballgen() player.red = redballgen() lotto.white = whiteballgen() lotto.red = redballgen() wc = correctwhite(player.white, lotto.white) rc = correctred(player.red, lotto.red) prizewon(wc, rc, powerp, player, jackpot) if playuntiljackpot == True: while playuntiljackpot == True: counter += 1 player.spent += ticketprice if powerplay == False: powerp = 1 else: powerp = powerplaygen() player.spent += powerplayprice if newticket == True: player.white = whiteballgen() player.red = redballgen() lotto.white = whiteballgen() lotto.red = redballgen() wc = correctwhite(player.white, lotto.white) rc = correctred(player.red, lotto.red) prizewon(wc, rc, powerp, player, jackpot) if player.nine == 1: playuntiljackpot = False ## show the results of the test print "you played \t%s times" % (counter) print "you lost: \t%s, %s percent" % (player.lost, ((1.0*player.lost / counter) * 100)) print "you won something %s times %s percent" % (player.won, ((1.0*player.won / player.lost) * 100)) print "chances of winning were 1 in %s" % (1.000*(player.lost / player.won)) print "" print "you spent: \t%s$" % (player.spent) print "you won: \t%s$" % (player.prizemoney) print "net loss: \t%s$" % (player.spent - player.prizemoney) print "you won back %s percent of your money" % ((1.0*player.prizemoney / player.spent) * 100) print "" print "winning conditions:" print "0 white 1 red: %s" % (player.one) print "1 white 1 red: %s" % (player.two) print "2 white 1 red: %s" % (player.three) print "3 white 0 red: %s" % (player.four) print "3 white 1 red: %s" % (player.five) print "4 white 0 red: %s" % (player.six) print "4 white 1 red: %s" % (player.seven) print "5 white 0 red: %s" % (player.eight) print "5 white 1 red: %s" % (player.nine)