Php найкращий генератор випадкових чисел. Випадковий вибір із масиву в PHP. Випадкові числа в PHP

Здійснює ініціалізацію генератора випадкових чисел. Синтаксис:

Void srand (int seed)

Ініціалізує генератор випадкових чисел значенням seed.

Srand((double) microtime()*1000000);
$ random = rand ();
echo $random;

GETRANDMAX

Повертає максимально можливе випадкове число. Синтаксис:

Int getrandmax()

Ця функція повертає максимальне значення, яке можна отримати за допомогою функції створення випадкових чисел rand().

Зазвичай це 32767

Здійснює генерацію випадкового числа. Синтаксис:

Int rand(])

У разі виклику з необов'язковими параметрами min і max ця функція генерує випадкове число, що лежить у межах цих параметрів включно. Якщо параметри min та max відсутні, повертається число, що лежить у межах від 0 до RAND_MAX.

Для коректної роботи цієї функції перед її використанням необхідно проініціалізувати генератор випадкових чисел функцією srand().

lcg_value()

LCG-генератор псевдо-випадкових чисел (PHP 4, PHP 5)

Опис:

Float lcg_value (void)

lcg_value() повертає псевдовипадкове число в діапазоні (0, 1). Функція поєднує два генератори з 2^31 - 85 і 2^31 - 249 у періоді.

mt_getrandmax()

Показує найбільш можливе випадкове значення (PHP 3> = 3.0.6, PHP 4, PHP 5)

Опис:

Int mt_getrandmax (void)

Показує максимальне значення, яке можна повернути функцією mt_rand()

mt_rand()

Генерує найкраще випадкове значення (PHP 3 >= 3.0.6, PHP 4, PHP 5)

Опис:

Int mt_rand()

Багато генераторів випадкових чисел старих версій мають сумнівні характеристики та працюють повільно. PHP використовує генератор випадкових чисел функції rand(). Функція mt_rand() є гарною її заміною. Вона використовує рандомний генератор чисел, що працює в 4 рази швидше, ніж rand(), та використовує Mersenne Twister.

Викликана без додаткових аргументів min і max, mt_rand() повертає псевдо-випадкове значення, розташоване між 0 і RAND_MAX. При необхідності одержати, наприклад, випадкові значення між 5 і 15 включно, йдеться mt_rand (5, 15).

Приклад застосування mt_rand()

Результатом виконання цього прикладу буде щось подібне:

1604716014
1478613278
6

Зауваження

Примітка: У версіях до 3.0.7 другий параметр функції вказував діапазон чисел. Наприклад, для отримання випадкових чисел між 5 і 15 цих версіях потрібно задати функцію mt_rand (5, 11).

mt_srand()

Встановлює початкове значення кращого генератора випадкових чисел (PHP 3 >= 3.0.6, PHP 4, PHP 5)

Опис:

Void mt_srand()

Встановлює початкове значення генератора випадкових чисел за допомогою seed. Починаючи з PHP 4.2.0, seed не є обов'язковим, і стандартні установки для випадкових значень опускаються.

Приклад використання mt_srand()

Примітка : Починаючи з PHP 4.2.0, більше немає необхідності ініціалізувати генератор випадкових чисел функціями srand() або mt_srand(), оскільки це відбувається автоматично.

Технічно термін «генератор випадкових чисел» – це абсурд, оскільки числа власними силами є випадковими. Наприклад, 100 це випадкове число? А 25? Що насправді означає цей термін, то це те, що створюється послідовність чисел, що з'являються випадковим чином. Це породжує складніше питання: що таке послідовність випадкових чисел? Єдино правильна відповідь: послідовність випадкових чисел – це послідовність, де всі елементи є непов'язаними. Це визначення призводить до такого феномена, що будь-яка послідовність може бути як випадковою, і невипадковою залежно від цього, як ця послідовність отримана. Наприклад, наступний рядок чисел
1 2 3 4 5 6 7 8 9 0
була отримана друкуванням верхнього рядка клавіатури по порядку, таким чином послідовність не може розглядатися як згенерована випадковим чином. Але як бути, якщо ви отримаєте ту ж саму послідовність, виймаючи пронумеровані тенісні кулі з барила. У разі це вже випадковим чином згенерована послідовність. Даний приклад показує, що випадковість послідовності залежить від того, як вона була отримана, а не від неї самої.

Пам'ятайте, що послідовність чисел, згенерована комп'ютером, детермінована: кожне число, крім першого, залежить від попередніх чисел. Технічно це означає, що комп'ютер може бути згенерована тільки квазівипадкова послідовність чисел, тобто. насправді вони не є випадковими. Однак, цього достатньо більшості завдань і такі послідовності для простоти будуть називатися випадковими. Один дуже цікавий метод був розроблений Джоном фон Нейманом; його часто називають середньоквадратичним. У цьому методі попереднє випадкове число зводиться у квадрат, та був з результату виділяються середні цифри. Наприклад, якщо ви створюєте числа із трьох цифр, а попереднє число було 121, то зведення у квадрат дає результат 14641. Виділення трьох середніх цифр дає наступне випадкове число 464. Недоліком даного методу є те, що він має дуже короткий період повторення, званий циклом . З цієї причини цей метод сьогодні не використовується. Сучасні методи генерації випадкових чисел значно складніші.

Випадкові числа в PHP

У PHP є дві групи функцій роботи з випадковими числами. Суто зовні їх можна відрізнити за префіксом mt_ у всіх функцій однієї з груп.

Застарілі функції
Функція rand. Повертає ціле число від нуля до значення RAND_MAX (яке 32767). Може мати два необов'язкові цілі параметри - якщо вони вказані, то генерується випадкове число від першого параметра до другого.

Echo rand(); echo rand(1,100); // Видаємо випадкове число від 1 до 100

Функція srand. Задає послідовність випадкових чисел, що видається функцією rand. Має цілий параметр - за різних значень цього параметра rand видаватиме різні послідовності чисел. Функцію srand достатньо викликати лише один раз перед усіма викликами функції rand. Приклад використання:

Srand (1288); // Ініціалізація генератора випадкових чисел for($i=0; $i