lottery.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import random
  2. import json
  3. white_possibles = list(range(1, 70))
  4. red_possibles = list(range(1, 27))
  5. tickets_per_drawing = 100
  6. num_drawings = 15600
  7. total_spent = 0
  8. earnings = 0
  9. times_won = {
  10. "5+P": 0,
  11. "5": 0,
  12. "4+P": 0,
  13. "4": 0,
  14. "3+P": 0,
  15. "3": 0,
  16. "2+P": 0,
  17. "1+P": 0,
  18. "P": 0,
  19. "0": 0,
  20. }
  21. def calc_win_amt(my_numbers, winning_numbers):
  22. win_amt = 0
  23. white_matches = len(my_numbers["whites"].intersection(
  24. winning_numbers["whites"]))
  25. power_match = my_numbers["red"] == winning_numbers["red"]
  26. if white_matches == 5:
  27. if power_match:
  28. win_amt = 2_000_000_000
  29. times_won["5+P"] += 1
  30. else:
  31. win_amt = 1_000_000
  32. times_won["5"] += 1
  33. elif white_matches == 4:
  34. if power_match:
  35. win_amt = 50_000
  36. times_won["4+P"] += 1
  37. else:
  38. win_amt = 100
  39. times_won["4"] += 1
  40. elif white_matches == 3:
  41. if power_match:
  42. win_amt = 100
  43. times_won["3+P"] += 1
  44. else:
  45. win_amt = 7
  46. times_won["3"] += 1
  47. elif white_matches == 2 and power_match:
  48. win_amt = 7
  49. times_won["2+P"] += 1
  50. elif white_matches == 1 and power_match:
  51. win_amt = 4
  52. times_won["1+P"] += 1
  53. elif power_match:
  54. win_amt = 4
  55. times_won["P"] += 1
  56. else:
  57. times_won["0"] += 1
  58. return win_amt
  59. # for drawing in range(num_drawings):
  60. hit_jp = False
  61. drawings = 0
  62. years = 0
  63. while True:
  64. drawings += 1
  65. white_drawing = set(random.sample(white_possibles, k=5))
  66. red_drawing = random.choice(red_possibles)
  67. winning_numbers = {"whites": white_drawing, "red": red_drawing}
  68. for ticket in range(tickets_per_drawing):
  69. total_spent += 2
  70. my_whites = set(random.sample(white_possibles, k=5))
  71. my_red = random.choice(red_possibles)
  72. my_numbers = {"whites": my_whites, "red": my_red}
  73. win_amt = calc_win_amt(my_numbers, winning_numbers)
  74. earnings += win_amt
  75. if win_amt == 2_000_000_000:
  76. hit_jp = True
  77. break
  78. if drawings % 156 == 0:
  79. years += 1
  80. print(f'{years} years')
  81. if hit_jp:
  82. break
  83. print(f'Spent: ${total_spent}')
  84. print(f'Earnings: ${earnings}')
  85. print(json.dumps(times_won, indent=2))