import random
def ordenar(inputx):
inputx = list(inputx)
inputx = sorted(inputx, key=int)
return inputx
def get_numbers(totall):
return random.sample(numeros, totall)
numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]
all_jogos = []
maximo_repetido = 9
vezes = 0
while True:
numbers = get_numbers(15)
for i in all_jogos:
total_repetido = len(set(numbers).intersection(i))
if total_repetido <= maximo_repetido:
vezes += 1
else:
vezes = 0
break
if vezes >= len(all_jogos):
all_jogos.append(numbers)
print("%s," % ordenar(numbers))
基本上,我的意图是生成15个数字的列表,以便它们之间重复的数字不超过9个(变量maximo_repetido
),生成尽可能多的列表。与all_jogos
中包含的所有列表进行比较,只要接受条件,这些列表就会随着每个循环而增长。你知道吗
问题是,所有可能的结果都不可能出现,因为只有在生成15个随机数之后才能进行验证/比较。你知道吗
当您要生成数字时,您如何设置条件/验证/比较,迫使您只搜索可能的结果?你知道吗
^{} 给出
n
中元素的所有长度组合。这就是你想用的。你知道吗combos
现在是一个迭代器(不是一个列表,注意,如果您需要多次阅读它,您需要显式地转换它),它包含所有15个长度为1-25的数字组合,您可以使用*或其他寻路算法来找到最佳可能的解决方案。你知道吗相关问题 更多 >
编程相关推荐