Як згенерувати випадкове число (або рядок) в 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 символів. Цей спосіб генерації випадкових буквено-цифрових рядків дуже простий, але іноді такий спосіб не буде найбільш оптимальним.

 

Recent Posts

Як змінити активну тему WordPress через базу даних

Тема (шаблон) — це своєрідний кістяк сайту на WordPress. І, на жаль, іноді цей «кістяк»…

7 години ago

5 практичних порад щодо розробки форм під мобільні пристрої

Контактна форма (чи будь-яка інша) на сайті — це дуже важливий компонент. На неї покладено…

1 день ago

Ліна Костенко

Жах не в тому, що щось зміниться. Жах у тому, що все може залишитися так…

7 днів ago

Трансформаційна гра родом з древньої Індії — Ліла

Що таке Ліла — це стародавня гра, що виступає в якості інструменту для особистісної трансформації,…

1 тиждень ago

Конструктор — найкращий варіант інтерактивної іграшки для дітей

Сучасні варіанти дитячих конструкторів — це не просто іграшки, а дієвий інструмент розвитку, який допомагає…

1 тиждень ago

Як зробити так, щоб ваш сайт показувався у блоці відповідей Google

Основний трафік на сайт з пошукових систем йде саме з органічної видачі. І тут дуже…

1 тиждень ago