Получить более 10000 уникальных случайных чисел (производительность) [дубликат]

Возможный дубликат:
Создать случайную числовую последовательность без повторов

Я хотел бы написать сокращатель URL, который использует только числа как короткая строка.

Я не хочу считать, я хочу, чтобы следующее новое число было случайным (или псевдослучайным).

На первый взгляд алгоритм будет выглядеть так (псевдокод):

do 
{
 number = random(0,10000)
}
while (datastore.contains(number))

datastore.store(number, url)

Проблема с этой реализацией заключается в следующем: чем больше в хранилище данных, тем больше вероятность того, что цикл будет выполняться несколько раз. Производительность со временем будет снижаться.

Нет лучшего способа получить случайное число, которое еще не используется?

0
задан Community 23 May 2017 в 10:34
поделиться