PHP Conference Japan 2024

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 的 CG。此函数的周期等于这两个素数的乘积。

注意

此函数不会生成加密安全的数值,并且绝不能用于加密目的或需要返回值不可预测的用途。

如果需要加密安全的随机性,则可以使用 Random\RandomizerRandom\Engine\Secure 引擎。对于简单的用例,random_int()random_bytes() 函数提供了方便且安全的 API,该 API 由操作系统的 CSPRNG 支持。

注意

使用乘法或加法(所谓的仿射变换)将返回值缩放到不同的区间可能会导致结果值出现偏差,因为浮点数在数轴上并非均匀分布。由于并非所有值都可以用浮点数精确表示,因此仿射变换的结果也可能导致值超出请求的区间。

使用 Random\Randomizer::getFloat() 生成任意区间内的随机浮点数。使用 Random\Randomizer::getInt() 生成任意区间内的随机整数。

参数

此函数没有参数。

返回值

一个介于 0.0 和 1.0(包括 0.0 和 1.0)之间的伪随机浮点值。

变更日志

版本 描述
8.4.0 此函数已被弃用。

参见

添加注释

用户贡献的注释 2 条注释

daniel dot baulig at gmx dot de
14 年前
选择你的武器
<?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);
}
?>
rok kralj gmail com
17 年前
一种返回两个数字之间随机浮点数的优雅方法

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