Я могу составить список всех комбинаций двоичных значений длины n itertools.list(product([0, 1], repeat=n))
, если n мало.
1000
0100
0110
1001
.
.
.
Как я могу случайным образом выбрать подмножество из списка выше без предварительного построения массивного списка комбинаций, когда n большое?
Допустим, я хочу случайным образом выбрать 1 миллион комбинаций без заменыкогда n = 30 (всего 2 ^ 30 комбинаций)
Я посмотрел расширенную функцию из itertools http://docs.python.org/2/library/itertools.html#recipes
def random_product(*args, **kwds):
"Random selection from itertools.product(*args, **kwds)"
pools = map(tuple, args) * kwds.get('repeat', 1)
return tuple(random.choice(pool) for pool in pools)
, но она возвращается только один раз за раз.Должен ли я выполнить цикл этой функции, пока не получу 1 миллион уникальных комбинаций?или есть лучший способ.Спасибо!