Код выхода, который вы получаете, указывает на то, что программа действительно рекурсировала до указанного лимита, однако достигает максимального числа рекурсий. Часто также необходимо указать ограничение потока. Но поскольку программа основана на генерации случайных чисел, она может просто работать некоторое время, когда действительно найден соответствующий список. Тем не менее, важно понимать, насколько мала вероятность, с которой вы имеете дело. Вы пытаетесь сопоставить 5 случайных чисел в двух списках, которые включают в себя:
- Вы хотите сгенерировать точно такие же 5 чисел. (От 1 до 50, где последовательность выбора 1 равна 1 / 50 и вероятность выбора 5 чисел составляет (1/5) ^ 5)
- Вы хотите, чтобы они были в том же порядке в списке. (сортировка, как вы сделали, - хороший выбор)
Чтобы улучшить шансы, вы можете сделать следующее:
import sys
import random
sys.setrecursionlimit(1500000)
lotteryWinner = []
lotteryRandom = []
for i in range(6):
number = random.randint(1,10)
lotteryWinner.append(number)
lotteryWinner.sort()
print(lotteryWinner)
def main():
number = random.randint(1,10)
if number not in lotteryWinner:
main()
else:
print('You win')
main()
Вывод:
[3, 4, 6, 9, 10, 10]
You win
Чтобы улучшить шансы, диапазон для генерации случайных целых чисел был уменьшен, и программа проверяет, только ли сгенерированное число находится в начальном списке сгенерированных чисел. Вы можете увеличить диапазон генерации случайных чисел, чтобы сделать выигрыш более редким.