Як згенерувати випадкове число (або рядок) в PHP
При розробці додатку на мові програмування PHP досить часто доводиться створювати випадкові числа. Наприклад, щоб робити вибірку випадкового запису з бази даних, щоб створювати унікальний ідентифікатор користувача (або сеансу), щоб виводити випадкову картинку на сайті, щоб привласнювати випадкові назви файлам і т.д. Застосувань цього є досить багато.
Серверу (комп’ютеру) досить складно згенерувати дійсно випадкове значення. Щоб спростити йому завдання – вам потрібно буде надати комп’ютеру діапазон конкретних значень для вибору. Як ви розумієте, це трохи суперечить самому факту випадковості. Але, поки нічого кращого не придумано.
В сьогоднішній статті ми розглянемо практичне рішення питання по генерації випадкових чисел або ж випадкових буквено-цифрових рядків.
Генерація випадкових чисел в PHP
Для генерації випадкових чисел в PHP є 2 функції (або генератора). Перший генератор випадкових чисел – це класична функція rand()
. Вона приймає два параметри: $min
(найменше значення, яке може бути повернуто) і $max
(найбільше значення, яке може бути повернуто).
Синтаксис функції:
<?php echo rand(25, 1150); // результатом буде випадкове число в діапазоні від 25 до 1150 ?>
Другий генератор випадкових чисел в PHP – це поліпшена версія першої функції. Це функція mt_rand()
. Скорочення MT походить від Mersenne Twister (вихору Мерсенна), по імені французького математика Марена Мерсенна. Ця функція менш передбачувана, ніж класична функція, а також вона працює трохи швидше (майже в 4 рази) за генератор rand()
.
Синтаксис функції:
<?php mt_rand($min, $max); // де $min – мінімальне значення випадкового числа // а $max – максимальне значення випадкового числа echo mt_rand(25, 1150); // результатом буде випадкове число в діапазоні від 25 до 1150 ?>
Криптографічно безпечні випадкові цілі числа
Починаючи з PHP версії 7.0 можна генерувати криптографічно безпечні псевдовипадкові цілі числа (тобто, числа, для яких випадковість результату дуже критична). Це робиться за допомогою функції random_int()
, яка також приймає параметри $min
та $max
.
Синтаксис функції:
<?php echo random_int(25, 1150); // результатом буде псевдовипадкове ціле число в діапазоні від 25 до 1150 ?>
Як згенерувати випадковий буквено-цифровий рядок в PHP
Для вирішення цього завдання в PHP існує досить багато способів. Ми ж розглянемо сьогодні тільки варіант створення випадкових рядків способом перетасування символів в рядку. Ми візьмемо фіксований набір символів, і згенеруємо випадкові буквено-цифрові рядки за допомогою функції str_shuffle($string)
. Врахуйте, що випадковий рядок, згенерований таким чином, не буде криптографічно безпечним. Проте, рядок в результаті буде досить непередбачуваним і його можна використовувати, наприклад, для генерації випадкових URL-адрес або паролів. Нижче один з прикладів використання:
<?php $dozvoleni_simvoli = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; echo substr(str_shuffle($dozvoleni_simvoli), 0, 15); // Можливий варіант результату: WpXq7uTs4ViJaxQ ?>
Ми просто перетасували рядок з допустимих символів, а потім взяли перші 15 символів. Цей спосіб генерації випадкових буквено-цифрових рядків дуже простий, але іноді такий спосіб не буде найбільш оптимальним.
Останні пости
Соломон
Життя нас вчить, що свою пару ми пізнаємо, коли розлучаємося, своїх братів ми пізнаємо, коли… Читати далі
Річард Бах
Жодне бажання не дається тобі окремо від сили, що дозволяє його здійснити. Хоча, можливо, для… Читати далі
Стівен Кінг
Життя — це безперервний досвід, і навіть найгірші моменти займають своє місце у пазлі нашого… Читати далі
невідомий автор
Люди, які люблять самотність, дорого заплатили за дружбу з кимось... (невідомий автор) Читати далі
Наполеон Гілл
Що розум людини може осягнути і в що він може повірити, того він здатен досягти… Читати далі