Не уникальные ID Python

Всем привет! Я хочу сгенерировать не уникальные User ID для своей базы. В интернете информация и куча гайдов по уникальной User ID, но мне нужен именно повторяющейся. Можете подсказать источники, где могу почитать?

Если хотите написать определённую функцию пожалуйста пишите и все возможные варианты чтобы поменять частоту и кол-во повторений.

Большое спасибо!


Ответы (2 шт):

Автор решения: Zhenia Kviatkivskyi

Простейший генератор буквенно-цифрового токена. Не уникального))

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)
→ Ссылка
Автор решения: strawdog

возможно, я не совсем правильно понял вопрос, но могу предложить так:

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]​

Можете сами оценить, как повторяются некоторые числа.

→ Ссылка