以双色球为例,代码如下:
import random
import time
# 获取开始时间
start_time = time.time()
# 以双色球为例,生成单注彩票号码
def generate_lottery():
lottery = []
for i in range(6):
num = random.randint(1, 33)
while num in lottery:
num = random.randint(1, 33)
lottery.append(num)
lottery.sort()
lottery.append(random.randint(1, 16))
return lottery
# 生成N次彩票号码
lotteries = []
lottery_times = 5000
print("执行随机次数是:%d" % lottery_times)
for i in range(lottery_times):
lotteries.append(generate_lottery())
# 统计数字出现次数,红球、蓝球分开统计
count_red = {}
count_blue = {}
for lottery in lotteries:
for num in lottery[:-1]:
if num in count_red:
count_red[num] += 1
else:
count_red[num] = 1
if lottery[-1] in count_blue:
count_blue[lottery[-1]] += 1
else:
count_blue[lottery[-1]] = 1
# 按数字出现次数进行排序,倒序
sorted_dict_red = sorted(count_red.items(), key=lambda x: x[1], reverse=False)
sorted_dict_blue = sorted(count_blue.items(), key=lambda x: x[1], reverse=False)
lowest_count_red = [x[0] for x in sorted_dict_red[:6]]
lowest_count_blue = [x[0] for x in sorted_dict_blue[:1]]
print("统计%s组随机彩票结果,出现概率最低的彩票组合为:" % lottery_times)
final_count = sorted(lowest_count_red) + lowest_count_blue
print(final_count)
# 获取结束时间
end_time = time.time()
elapsed_time = end_time - start_time
print("统计%s组随机彩票结果,生成低概率彩票共耗时:%s秒" % (lottery_times, elapsed_time))
运行结果如下: