Генерація випадкових чисел, випадкові числа в php і javascript

Генерація випадкових чисел, випадкові числа в php і javascript

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

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

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

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

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

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

Увага! Починаючи з версії PHP 4.2.0 не потрібно викликати srand () - PHP робить це автоматично.
Функція getrandmax (). Повертає значення максимального випадкового числа (32767).