PHPCon Poland 2024

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

add a note

User Contributed Notes 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