Я знаю, как создать случайную строку, например:
''.join(secrets.choice(string.ascii_uppercase + string.digits) for _ in range(N))
Однако не должно быть дубликатов, поэтому в настоящее время я проверяю только, существует ли ключ в списке, как показано в следующем коде:
import secrets
import string
import numpy as np
amount_of_keys = 40000
keys = []
for i in range(0,amount_of_keys):
N = np.random.randint(12,20)
n_key = ''.join(secrets.choice(string.ascii_uppercase + string.digits) for _ in range(N))
if not n_key in keys:
keys.append(n_key)
Что подходит для небольшого количества клавиш, таких как 40000
, однако проблема не масштабируется, тем больше клавиш есть. Поэтому мне интересно, есть ли более быстрый способ получить результат для еще большего количества ключей, например 999999