Я знаю, как создать случайную строку, например:
''.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