PHP Conference Japan 2024

lcg_value

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

lcg_value組合線性同餘產生器

警告

此函式自 PHP 8.4.0 起已被標記為 *已棄用*。強烈建議不要依賴此函式。

說明

lcg_value() 會回傳一個介於 (0, 1) 範圍內的偽亂數。此函式結合了兩個週期分別為 2^31 - 85 和 2^31 - 249 的同餘產生器 (CG)。此函式的週期等於兩個質數的乘積。

注意

此函式不會產生密碼安全的數值,*絕對不可*用於加密目的,或需要回傳值不可預測的用途。

如果需要加密安全的隨機性,可以使用 Random\Randomizer 搭配 Random\Engine\Secure 引擎。對於簡單的使用案例,random_int()random_bytes() 函式提供了一個方便且安全的 API,其底層由作業系統的 CSPRNG 支援。

注意

使用乘法或加法(所謂的仿射變換)將返回值縮放到不同的區間可能會導致結果值產生偏差,因為浮點數在數線上並非均勻分佈。由於並非所有值都能以浮點數精確表示,因此仿射變換的結果也可能導致值落在請求區間之外。

使用 Random\Randomizer::getFloat() 產生任意區間內的隨機浮點數。使用 Random\Randomizer::getInt() 產生任意區間內的隨機整數。

參數

此函式沒有參數。

返回值

介於 0.0 和 1.0 之間(含)的偽隨機浮點數值。

更新日誌

版本 說明
8.4.0 此函式已被棄用。

另請參閱

新增筆記

使用者貢獻的筆記 2 則筆記

daniel dot baulig at gmx dot de
14 年前
選擇你的武器
<?php
函式 mt_randf($min, $max)
{
return
$min + abs($max - $min) * mt_rand(0, mt_getrandmax())/mt_getrandmax();
}
函式
lcg_randf($min, $max)
{
return
$min + lcg_value() * abs($max - $min);
}
函式
randf($min, $max)
{
return
$min + rand(0,getrandmax()) / getrandmax() * abs($max - $min);
}
?>
rok kralj gmail com
17 年前
在兩個數字之間返回隨機浮點數的簡潔方法

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