Вы можете использовать стандартный модуль itertools
, чтобы помочь:
import itertools
import random
import time
a = ["google.com", "yahoo.com", "gmail.com"]
combs = list(itertools.combinations(a, 2))
random.shuffle(combs)
for c in combs:
print(c)
time.sleep(3600)
РЕДАКТИРОВАТЬ: Исходя из ваших разъяснений в комментариях, может помочь следующее предложение.
То, что вы ищете, это максимальная длина последовательности целых чисел в диапазоне [0, N). Вы можете сгенерировать это в Python, используя что-то вроде:
def modseq(n, p):
r = 0
for i in range(n):
r = (r + p) % n
yield r
Учитывая целое число n
и простое число p
(которое не является коэффициентом n
, что делает p
больше, чем n
, гарантирует это), вы получите последовательность всех целых чисел из От 0 до n
-1:
>>> list(modseq(10, 13))
[3, 6, 9, 2, 5, 8, 1, 4, 7, 0]
Оттуда вы можете отфильтровать этот список, включив в него только целые числа, содержащие желаемое количество установленных 1 бит (см. Лучший алгоритм подсчета количества установленных бит в 32-разрядном целом числе? для предложения). Затем выберите элементы из вашего набора в зависимости от того, какие биты установлены в 1. В вашем случае вы должны использовать pass n
как 2 N , если N
- это количество элементов в вашем наборе.
Эта последовательность является детерминированной с учетом времени T (из которого вы можете найти позицию в последовательности), числа N элементов и простого P.