Python 随机生成彩票号码并查找重复率最低的号码组合
以下是一种实现方法:
import random
def generate_lottery_numbers():
' 生成A区随机数 '
a_numbers = random.sample(range(1, 36), 5)
a_numbers.sort()
' 生成B区随机数 '
b_numbers = random.sample(range(1, 13), 2)
b_numbers.sort()
return a_numbers, b_numbers
' 生成22999组彩票号码 '
lottery_numbers = [generate_lottery_numbers() for _ in range(22999)]
' 计算A区重复率 '
def calculate_a_repeat_rate(numbers):
repeat_count = 0
for i in range(len(numbers)):
for j in range(i+1, len(numbers)):
if numbers[i] == numbers[j]:
repeat_count += 1
return repeat_count
' 根据A区重复率排序 '
sorted_lottery_numbers = sorted(lottery_numbers, key=lambda x: calculate_a_repeat_rate(x[0]))
' 显示A区重复率最小的11组 '
for i in range(11):
print(f'A区号码:{sorted_lottery_numbers[i][0]}, B区号码:{sorted_lottery_numbers[i][1]}')
上述代码首先定义了一个generate_lottery_numbers函数,用于生成一组彩票号码,其中A区使用random.sample函数从1至35中随机取5个数,B区使用random.sample函数从1至12中随机取2个数,并对两个区的号码进行排序。然后,通过列表推导式生成了22999组彩票号码。
接下来,定义了一个calculate_a_repeat_rate函数,用于计算A区重复率。该函数遍历A区号码,并使用两重循环比较每对号码是否相同,若相同则重复率加1。然后,使用sorted函数对彩票号码进行排序,排序的依据是A区的重复率。
最后,通过循环打印A区重复率最小的11组彩票号码。
原文地址: https://www.cveoy.top/t/topic/qkvy 著作权归作者所有。请勿转载和采集!