Не уникальные ID Python
Всем привет! Я хочу сгенерировать не уникальные User ID для своей базы. В интернете информация и куча гайдов по уникальной User ID, но мне нужен именно повторяющейся. Можете подсказать источники, где могу почитать?
Если хотите написать определённую функцию пожалуйста пишите и все возможные варианты чтобы поменять частоту и кол-во повторений.
Большое спасибо!
Ответы (2 шт):
Простейший генератор буквенно-цифрового токена. Не уникального))
result = [''.join(random.choice(string.digits+string.ascii_letters) for i in range(10))]
print('result: ',result[0].lower())
Если убрать из кода string.ascii_letters будет генерить только циферки. Функция range() регулирует длину последовательности.
А как тут контролировать кол-во повторений?
Напишем функцию def create_id(), которая будет принимать аргумент tries число нужных повторений и возвращает список сгенерированых цифровых айдишников.
def create_id(tries):
array =[]
while tries > 0:
result = [''.join(random.choice(string.digits) for i in range(10))]
print('result: ',result[0].lower())
array.append(int(result[0].lower()))
tries -=1
return array
r = create_id(5) # передаете аргумент - число нужных повторений
print(r)
возможно, я не совсем правильно понял вопрос, но могу предложить так:
import numpy as np
ids = np.random.randint(1000, 9999, 10) # генерируем 10 "случайных" чисел от 1000 до 9999
prob = np.random.dirichlet(np.ones(10)) # генерируем вероятности
for i in range(5):
print(f"Sample {i}")
res = np.random.choice(ids, 5, p=prob)
print(res)
результат (будет отличаться каждый раз):
Sample 0
[4569 4806 5807 8181 8181]
Sample 1
[5807 8181 4569 9526 8181]
Sample 2
[6859 5807 8181 4569 8035]
Sample 3
[6859 8181 8780 4569 8181]
Sample 4
[9426 8181 8181 8181 8181]
Можете сами оценить, как повторяются некоторые числа.