Перейти к содержимому

mt_srand()

Сегодня мы обсудим функцию mt_srand() в PHP. Эта функция инициализирует генератор псевдослучайных чисел, используемый функцией mt_rand(). Примечание: mt_srand() устарела начиная с PHP 8.1 и удалена в PHP 8.4. Для современных PHP-приложений вместо неё следует использовать random_int() или random_bytes().

Что такое функция mt_srand()?

Функция mt_srand() инициализирует генератор псевдослучайных чисел Mersenne Twister с определённым начальным значением (seed). При использовании фиксированного seed функция mt_rand() выдаёт предсказуемую, воспроизводимую последовательность чисел. Такое детерминированное поведение в основном полезно для тестирования, отладки или в сценариях, где требуется стабильный случайный вывод.

Как использовать функцию mt_srand()

Использование mt_srand() достаточно просто. Вот базовый пример:

Как использовать функцию mt_srand() в PHP?

php
<?php
// Seed the random number generator using the mt_srand() function
mt_srand(12345);

// Generate a random integer using the mt_rand() function
$result = mt_rand();

// Output the result
echo $result;
?>

В этом примере mt_srand(12345) задаёт seed генератора. Последующие вызовы mt_rand() будут выдавать одинаковый результат при разных запусках, поскольку seed остаётся неизменным. Результат сохраняется в $result и выводится на экран.

Примечание о совместимости версий: В PHP 8.1+ этот код вызовет предупреждение об устаревании. Для PHP 8.4+ и современных проектов замените mt_srand()/mt_rand() на random_int() для безопасной и поддерживаемой генерации случайных чисел.

Заключение

Хотя mt_srand() обеспечивает детерминированные последовательности случайных чисел для устаревшего кода или специфических задач тестирования, она устарела в PHP 8.1 и удалена в PHP 8.4. Современная разработка на PHP должна опираться на random_int() или random_bytes() для безопасной и поддерживаемой генерации случайных чисел. Надеемся, это руководство прояснило исторический контекст и правильное использование mt_srand() в старых версиях PHP.

Практика

Какова цель функции mt_srand() в PHP?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.