Задать вопрос

Как сгенерировать случайное число (от 0 до 999999) которого нет в БД?

Требуется генерировать случайные числа, которых нет в БД. От 0 до 999999. В данный момент использую таблицу A с данными (где ID не повторяются и являются случайными и не последовательными) и таблицу B со списком ID (от 0 до 999999). Вычитаю из B таблицу A и получаю случайную строку. Это метод не совсем удобен т.к. таблица B занимает много места. Существуют ли альтернытивные способы (алгоритмы) для осуществления данной процедуры?
  • Вопрос задан
  • 551 просмотр
Подписаться 1 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 4
Возможно Вам подойдет алгоритмический метод. Шифруйте любым криптографическим алгоритмом с выходным пространством [1..999999] на фиксированном ключе числа 1, 2, 3, ... .

Пока ключ фиксирован в силу биективности алгоритма Вы будете получать уникальные ID
Ответ написан
Комментировать
@deliro
https://habrahabr.ru/company/virgilsecurity/blog/3...
Как раз сегодня опубликовали
Ответ написан
Комментировать
alsopub
@alsopub
Например генерация случайного числа и проверка его наличия в базе.
Если строка со сгенерированным ID найдена - повторить генерацию.
Ответ написан
ifaustrue
@ifaustrue
Пишу интересное в теллеграмм канале @cooladmin
В БД построить индекс по ID (если ещё нет), в цикле пока ID не уникален генерировать его, проверка уникальности по селекту в БД. Имхо, иначе это не реализовать, нюансы только в способе проверки и в способе генерации.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы