Python模拟超级大乐透随机选号

您所在的位置:网站首页 python预测大乐透中奖 Python模拟超级大乐透随机选号

Python模拟超级大乐透随机选号

2024-07-16 17:21| 来源: 网络整理| 查看: 265

看了一下体彩超级大乐透规则:前区号码由01—35共三十五个号码组成,后区号码由01—12共十二个号码组成。由此可以使用random模拟体彩超级大乐透随机选号:

import random import time class Lottery: '''一次模拟超级大乐透''' def __init__(self): '''初始化模型''' self.num_choice_list = [i for i in range(1, 36)]#前区1至35数字 self.letter_choice_list = [chr(i) for i in range(97, 109)]#为了区分后区1至12数字,用字母a至l代替 def bet(self, num_times = 5, letter_times = 2): '''前区共5个数字,后区共2个数字,可以更改参数''' self.num_times = num_times self.letter_times = letter_times self.result = set() #随机抽取5个数字,也可以简单使用random.sample()方法 self.num_times = 0 while self.num_times < num_times: self.num_result = random.choice(self.num_choice_list) if self.num_result not in self.result: self.result.add(self.num_result) else: continue self.num_times += 1 #随机抽取2个字母,也可以简单使用random.sample()方法 self.letter_times = 0 while self.letter_times < letter_times: self.letter_result = random.choice(self.letter_choice_list) if self.letter_result not in self.result: self.result.add(self.letter_result) else: continue self.letter_times += 1 return self.result def count_probability(self): '''统计中奖计算次数''' self.try_nums = 0 self.tries = self.result self.time_start = time.time() # 记录计算开始时间 while True: self.try_nums += 1 self.bet() if self.result == self.tries: break self.time_end = time.time()#记录计算结束时间 print(f'此次中奖共计算{self.try_nums}次,计算共用时{self.time_end - self.time_start}秒。')

因为用集合运行速度更快,中奖结果用set集合记录,在随机选择时剔除重复号码和字母。也可以使用random.sample选取,但为了练习,用了复杂一点的方法。同时为了区分前后区数字,后区两个数字用字母a至l代替。

my_bet = Lottery() print(f'此次中奖号码为: {my_bet.bet()}') my_bet.count_probability()#统计计算次数和花费时间

继续运行得到结果:

此次中奖号码为: {1, 'f', 'e', 4, 9, 17, 28} 此次中奖共计算31038748次,计算共用时131.57226610183716秒。 Process finished with exit code 0



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3