ConFoo 2025

lcg_value

(PHP 4, PHP 5, PHP 7, PHP 8)

lcg_valueГенерирует псевдослучайное число, применяя комбинированный линейный конгруэнтный метод

Внимание

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

Описание

#[\Deprecated]
lcg_value(): float

Функция lcg_value() возвращает псевдослучайное значение в диапазоне (0, 1). Функция комбинирует два конгруэнтных генератора с периодами 2^31 - 85 и 2^31 - 249. Период этой функции равен произведению обоих простых чисел.

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

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

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

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

Масштабирование возвращаемого значения для разных интервалов путём умножения или сложения (аффинного преобразования) может сместить результирующее значение, так как числа с плавающей точкой не одинаково плотные по всему ряду чисел. Поскольку не все значения можно точно представить числом с плавающей точкой, результат афинного преобразования также может вернуть значения, выходящие за пределы запрошенного интервала.

Чтобы сгенерировать случайное число с плавающей точкой в пределах произвольного интервала, вызывают метод Random\Randomizer::getFloat(). Для генерации случайного целого числа в пределах произвольного интервала вызывают метод Random\Randomizer::getInt().

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

У этой функции нет параметров.

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

Функция возвращает псевдослучайное число с плавающей точкой в диапазоне от 0.0 до 1.0 включительно.

Список изменений

Версия Описание
8.4.0 Функция устарела.

Смотрите также

  • Random\Randomizer::getFloat() - Получает равномерно выбранное число с плавающей точкой
  • Random\Randomizer::getInt() - Получает равномерно выбранное целое число
  • random_int() - Получает криптографически безопасное равномерно выбранное целое число

Добавить

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

up
16
daniel dot baulig at gmx dot de
14 years ago
Choose your weapon:
<?php
function mt_randf($min, $max)
{
return
$min + abs($max - $min) * mt_rand(0, mt_getrandmax())/mt_getrandmax();
}
function
lcg_randf($min, $max)
{
return
$min + lcg_value() * abs($max - $min);
}
function
randf($min, $max)
{
return
$min + rand(0,getrandmax()) / getrandmax() * abs($max - $min);
}
?>
up
16
rok kralj gmail com
17 years ago
An elegant way to return random float between two numbers:

<?php
function random_float ($min,$max) {
return (
$min+lcg_value()*(abs($max-$min)));
}
?>
To Top