V
V
Vasily Medvedev2016-10-10 14:59:38
PHP
Vasily Medvedev, 2016-10-10 14:59:38

How to generate a random number (from 0 to 999999) which is not in the database?

It is required to generate random numbers that are not in the database. From 0 to 999999. Currently using table A with data (where IDs are not repeated and are random and non-sequential) and table B with a list of IDs (from 0 to 999999). I subtract table A from B and get a random row. This method is not very convenient. table B takes up a lot of space. Are there alternative methods (algorithms) for implementing this procedure?

Answer the question

In order to leave comments, you need to log in

4 answer(s)
Андрей, 2016-10-10
@OLS

Возможно Вам подойдет алгоритмический метод. Шифруйте любым криптографическим алгоритмом с выходным пространством [1..999999] на фиксированном ключе числа 1, 2, 3, ... .
Пока ключ фиксирован в силу биективности алгоритма Вы будете получать уникальные ID

R
Roman Kitaev, 2016-10-10
@deliro

https://habrahabr.ru/company/virgilsecurity/blog/3...
Как раз сегодня опубликовали

Алексей, 2016-10-10
@alsopub

Например генерация случайного числа и проверка его наличия в базе.
Если строка со сгенерированным ID найдена - повторить генерацию.

Клёвый Админ, 2016-10-10
@ifaustrue

В БД построить индекс по ID (если ещё нет), в цикле пока ID не уникален генерировать его, проверка уникальности по селекту в БД. Имхо, иначе это не реализовать, нюансы только в способе проверки и в способе генерации.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question