array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ru', ), 'this' => array ( 0 => 'function.gmp-random.php', 1 => 'gmp_random', ), 'up' => array ( 0 => 'ref.gmp.php', 1 => 'GMP Функции', ), 'prev' => array ( 0 => 'function.gmp-random-seed.php', 1 => 'gmp_random_seed', ), 'next' => array ( 0 => 'function.gmp-root.php', 1 => 'gmp_root', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ru', 'path' => 'reference/gmp/functions/gmp-random.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4 >= 4.0.4, PHP 5, PHP 7)
gmp_random — Случайное число
Эта функция объявлена УСТАРЕВШЕЙ начиная с PHP 7.2.0 и была УДАЛЕНА в версии PHP 8.0.0. Использовать эту функцию крайне не рекомендуется.
Генерирует случайное число. Число будет лежать в пределах от нуля до (2 ** n) - 1,
где n - это число, представляющее из себя произведение числа
limiter
и количества бит в лимбе (limb).
Если число limiter
отрицательное, то будет возвращён
отрицательный результат.
Лимб (дословно конечность) - внутренний GMP механизм. Технически это часть числа, помещающаяся в одно машинное слово. Количество бит в нем может различаться в разных системах. В основном это либо 32, либо 64, но это не гарантируется.
Функция не создаёт криптографически безопасные значения и не должна использоваться в криптографических целях или целях, которые требуют, чтобы возвращаемые значения были недоступны для разгадывания.
Если нужна криптографически безопасная случайная последовательность, можно использовать класс Random\Randomizer с движком Random\Engine\Secure. Для простых сценариев существуют функции random_int() и random_bytes() с удобным API криптографически безопасного генератора псевдослучайных чисел (CSPRNG), поддерживаемого операционной системой.
Случайное GMP число.
Пример #1 Пример использования gmp_random()
<?php
$rand1 = gmp_random(1); // случайное число от 0 до 1 * бит на лимб
$rand2 = gmp_random(2); // случайное число от 0 до 2 * бит на лимб
echo gmp_strval($rand1) . "\n";
echo gmp_strval($rand2) . "\n";
?>
Результат выполнения приведённого примера:
1915834968 8642564075890328087