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 случайных чисел.
Как вы делаете условие/проверку/сравнение, когда вы собираетесь генерировать числа, заставляя вас искать только возможные результаты?
ordenarможно и нужно упростить доreturn sorted(inputx); входные данные уже представляют собой последовательности целых чисел, поэтомуkey=intявляется избыточным, аsortedуже преобразуется в новыйlistперед сортировкой, поэтому ручное построение списка сlist()просто означает дополнительный бессмысленный временный список. - person ShadowRanger   schedule 02.06.2018