Как сделать так, чтобы в функции mt_rand () не было повторов?

0

В моем веб-приложении php я сохраняю каждое число, сгенерированное mt_rand() в базе данных, и используя mysql для проверки, существует ли он, если он это делает, index.php обновляется, чтобы получить другое число, а затем он снова проверяет, существует ли число, если это не так, то текущее число сохраняется в обновлении db orelse. "Проблема в том, что есть вероятность, что сохраненные числа генерируются снова и снова, а страница обновляется в течение длительного времени, что может повлиять на время загрузки сайта. Так что вы можете предложить более простой метод?

  • 0
    сбросьте данные один раз в массив, а затем сгенерируйте число и сравните с массивом, в этом случае вам нужно будет перейти к базе данных только один раз, так что я думаю, это будет быстро.
  • 0
    Разве это не то, для чего БД предоставляют автоинкременты? Генерация уникальных чисел? mt_rand() - это инструмент для предоставления случайных чисел, а не для предоставления уникальных чисел.
Показать ещё 1 комментарий
Теги:

1 ответ

0

Один из способов хранения различных чисел в базе данных (таблице) - хранить их в последовательном порядке.

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

Таким образом, вы можете хранить отдельные цифры в базе данных. Поскольку каждый раз запускается только 3 запроса базы данных (сначала для получения размера таблицы, второй для получения номера в последней строке и третьего для вставки нового номера), этот метод будет сравнительно быстрым.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню