PHP 8.5.0 Alpha 4 available for testing

Random\Engine\Mt19937::__construct

(PHP 8 >= 8.2.0)

Random\Engine\Mt19937::__constructСоздаёт новый объект движка Mt19937

Описание

public Random\Engine\Mt19937::__construct(?int $seed = null, int $mode = MT_RAND_MT19937)

Предостережение

Поскольку механизм 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 обеспечивает криптографически безопасную случайную последовательность.

Список параметров

seed

Параметр заполняет состояние значениями, сгенерированными линейным конгруэнтным генератором, который был заполнен параметром seed, интерпретируемым как 32-битное целое число без знака.

При пропуске параметра seed или передаче значения null значением параметра становится случайное 32-битное целое число без знака.

mode

Константа из следующего списка, которая указывает реализацию алгоритма.

  • MT_RAND_MT19937: Корректная реализация движка Mt19937.
  • MT_RAND_PHP: Некорректная реализация для обратной совместимости с функцией mt_srand() до версии PHP 7.1.0.

Внимание

Функциональность УСТАРЕЛА с PHP 8.3.0. Пользоваться функциональностью настоятельно не рекомендуют.

Примеры

Пример #1 Пример работы метода Random\Engine\Mt19937::__construct()

<?php

// Используется случайное 32-битное начальное число
$e = new \Random\Engine\Mt19937();

$r = new \Random\Randomizer($e);

?>
Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top