(PHP 4, PHP 5, PHP 7, PHP 8)
srand — Устанавливает начальное значение для инициализации генератора псевдослучайных чисел
Функция устанавливает значение параметра seed как начальное значение для инициализации генератора псевдослучайных чисел.
При пропуске параметра seed генерируется псевдослучайное начальное значение.
Замечание: Устанавливать начальное значение для инициализации генератора псевдослучайных чисел функциями srand() или mt_srand() не требуется, поскольку значение инициализируется автоматически.
Поскольку механизм Mt19937 ("Mersenne Twister") принимает в качестве значения только одно 32-битное целое число, количество возможных случайных последовательностей ограничено всего 232 (то есть 4 294 967 296), несмотря на огромный период Mt19937, равный 219937-1.
Дубликаты появятся гораздо раньше, если полагаться на неявное или явное случайное значение. Дублированные значения ожидаются с 50% вероятностью после менее чем 80 000 случайно сгенерированных значений в соответствии с проблемой дня рождения. Вероятность дублирования значений составляет 10% после случайной генерации примерно 30 000 значений.
Это делает алгоритм Mt19937 непригодным для генерации последовательностей, в которых дублирование возникает с ничтожной вероятностью. Если требуется воспроизводимое значение, то движки Random\Engine\Xoshiro256StarStar и Random\Engine\PcgOneseq128XslRr64 поддерживают гораздо большие значения, которые вряд ли столкнутся случайно. Если воспроизводимость не требуется, механизм Random\Engine\Secure генерирует криптографически безопасную случайную последовательность.
Замечание: Начиная с PHP 7.1.0 функция srand() стала синонимом функции mt_srand().
seed
Внутренний механизм функции интерпретирует значение параметра seed как 32-битное целое беззнаковое число,
генерирует на основе числа линейную конгруэнтную последовательность чисел,
а затем инициализирует генератор псевдослучайных чисел значениями последовательности.
При пропуске параметра seed или при установке значения null
начальное значение инициализируется случайным беззнаковым 32-битным числом.
Функция не возвращает значения после выполнения.
| Версия | Описание |
|---|---|
| 8.3.0 |
Параметр seed теперь принимает значение null.
|
| 7.1.0 | Функция srand() стала синонимом функции mt_srand(). |