getrandmax()
Функция getrandmax() в PHP возвращает максимальное случайное значение, которое может быть сгенерировано функцией rand().
Функция PHP getrandmax() возвращает наибольшее целое число, которое функция rand() может сгенерировать при вызове без аргументов. Знание этой верхней границы позволяет безопасно масштабировать случайные значения в нужный диапазон, поэтому getrandmax() наиболее полезна в связке с rand(), а не сама по себе.
Синтаксис
getrandmax(): intgetrandmax() не принимает никаких параметров и возвращает int. В современном PHP (7.1 и выше) она неизменно возвращает 2147483647 (максимальное значение знакового 32-битного целого числа, 2^31 - 1) независимо от операционной системы или архитектуры. До PHP 7.1 значение могло различаться в зависимости от платформы, что является одной из причин, по которым сейчас предпочтение отдаётся более переносимому семейству mt_rand().
Как использовать getrandmax()
Поскольку функция не принимает аргументов, её вызов прост:
На современной установке PHP это выводит 2147483647.
Масштабирование rand() в произвольный диапазон
Основное практическое применение getrandmax() — преобразование вывода rand() в дробное число или меньший диапазон. Разделив результат rand() на getrandmax(), можно получить число с плавающей точкой от 0 до 1, которое затем умножается для получения нужного диапазона:
<?php
// A random float between 0 and 1
$fraction = rand() / getrandmax();
// Scale that fraction into the range 0–100
$scaled = $fraction * 100;
echo "Fraction: " . ($fraction >= 0 && $fraction <= 1 ? "in [0, 1]" : "out of range") . "\n";
echo "Scaled value is between 0 and 100: " . ($scaled >= 0 && $scaled <= 100 ? "yes" : "no") . "\n";
?>Вывод подтверждает, что дробное число остаётся в диапазоне [0, 1], а масштабированное значение — в диапазоне [0, 100]. Поскольку конкретные числа случайны, проверка диапазона (а не фиксированного значения) является надёжным способом верификации логики.
getrandmax() и mt_getrandmax()
В PHP 7.0+ функции rand() и mt_rand() используют один и тот же базовый генератор случайных чисел, поэтому getrandmax() и mt_getrandmax() возвращают одинаковое значение. Для нового кода рекомендуется:
mt_rand()— для более быстрых псевдослучайных чисел лучшего качества.random_int()— когда требуются криптографически безопасные значения (пароли, токены, коды безопасности).
rand() и getrandmax() используйте преимущественно при работе с устаревшим кодом, который уже применяет эти функции.
Заключение
Функция getrandmax() сообщает верхнюю границу для rand() — фиксированное значение 2147483647 в современном PHP. Её реальная ценность заключается в использовании в качестве знаменателя при масштабировании случайных целых чисел в числа с плавающей точкой или произвольные диапазоны. Для новых проектов предпочтительнее семейство mt_rand() или random_int() для криптографически безопасной случайности.