PHP 8.4.1 Released!

gmp_random

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_randomСлучайное число

Внимание

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

Описание

gmp_random(int $limiter = 20): GMP

Генерирует случайное число. Число будет лежать в пределах от нуля до (2 ** n) - 1, где n - это число, представляющее из себя произведение числа limiter и количества бит в лимбе (limb). Если число limiter отрицательное, то будет возвращён отрицательный результат.

Лимб (дословно конечность) - внутренний GMP механизм. Технически это часть числа, помещающаяся в одно машинное слово. Количество бит в нем может различаться в разных системах. В основном это либо 32, либо 64, но это не гарантируется.

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

Функция не создаёт безопасные для криптографических целей значения, её нельзя использовать в криптографических целях или целях, которые требуют, чтобы значения возврата нельзя было угадать.

Безопасные для криптографических целей случайные последовательности создаёт композиция класса Random\Randomizer с движком Random\Engine\Secure. В простых сценариях пользуются функциями random_int() и random_bytes() с удобным и безопасным API-интерфейсом, который поддерживается безопасным для криптографических целей CSPRNG-генератором псевдослучайных чисел операционной системы.

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

limiter

Ограничитель.

Объект GMP, целое число (int) или числовая строка (string).

Возвращаемые значения

Случайное 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

Добавить

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

up
1
asphp at dsgml dot com
8 years ago
Warning: Do not use this function.

Use gmp_random_bits() or gmp_random_range() instead.

The documentation and the code for this function do NOT match, and in any case this function is quite useless.
To Top