Я работаю над программой генерации лотерейных номеров. У меня есть фиксированный список разрешенных номеров (1-80), из которых пользователи могут выбрать 6 номеров. Каждый номер может быть выбран только один раз. Я хочу эффективно генерировать все возможные комбинации. Текущая реализация занимает более 30 секунд, если allow_numbers - [1, ..., 60]. Кроме того, он замораживает мою систему.
from itertools import combinations
import numpy as np
LOT_SIZE = 6
allowed_numbers = np.arange(1, 61)
all_combinations = np.array(list(combinations(allowed_numbers, LOT_SIZE)))
print(len(all_combinations))
Я думаю, что мне нужен массив NumPy (не уверен, если 2D). Что-то вроде
[[1,2,3,4,5,6],
[1,2,3,4,5,,7],...]
потому что я хочу (быстро) выполнить несколько операций над этими комбинациями. Эти операции могут включать,
- Удаление комбинаций, имеющих только четные числа
- Удаление комбинаций, чья сумма больше 150 и т. Д.
- Проверка наличия только одной пары последовательных чисел (допустимо: [1,2,4,6,8,10] {Pair: (1,2)} | Недопустимо: [1,2,4, 5,7,9] {пары: (1,2) и (4,5)})
Любая помощь будет оценена.
Спасибо