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

 

Share
Теги: php

Останні пости

202ЗСУ

SebWeo щиро вітає усіх із Новим роком! Бажаємо особистих перемог, а головне, найбажанішої — швидкої… Читати далі

31/12/2022

Який подарунок можна вручити батькові на День захисника України?

У кожної української сім'ї є свої певні традиції та улюблені свята, особливо усі ми любимо… Читати далі

19/08/2022

Демокріт

Ми потребуємо не стільки допомоги друзів, а більше тієї впевненості, що ми її отримаємо Демокріт… Читати далі

21/02/2022

Майк Тайсон

Коли мені важко, я завжди нагадую собі про те, що якщо я здамся — краще… Читати далі

12/02/2022

25 корисних порад та рішень jQuery, які ви повинні знати

jQuery – це швидка і досить невелика бібліотека JavaScript. Вона спрощує створення інтерактивних та приголомшливих… Читати далі

09/02/2022

Йоганн Вольфганг фон Гете

Кожен чує тільки те, що він розуміє Йоганн Вольфганг фон Гете   Читати далі

03/02/2022