(PHP 4, PHP 5, PHP 7, PHP 8)
rand — 產生一個亂數整數
如果未指定選用的 min
、max
參數,rand() 會回傳一個介於 0 和 getrandmax() 之間的偽亂數整數。例如,如果您想要介於 5 和 15(含)之間的亂數,請使用 rand(5, 15)
。
此函式不會產生密碼學安全的數值,而且*不得*用於密碼學目的,或需要回傳值不可猜測的用途。
如果需要加密安全的隨機性,可以使用 Random\Randomizer 搭配 Random\Engine\Secure 引擎。對於簡單的應用場景,random_int() 和 random_bytes() 函式提供了一個便捷且安全的 API,它由作業系統的 CSPRNG 支援。
注意:在某些平台(例如 Windows)上,getrandmax() 的最大值只有 32767。如果您需要大於 32767 的範圍,指定
min
和max
參數可以讓您建立更大的範圍,或者考慮使用 mt_rand() 函式。
注意:自 PHP 7.1.0 起,rand() 使用與 mt_rand() 相同的隨機數產生器。為了保持向下相容性,rand() 允許
max
小於min
,而 mt_rand() 在這種情況下會返回false
。
介於 min
(或 0)和 max
(或 getrandmax())之間(含)的偽隨機值。
版本 | 說明 |
---|---|
7.2.0 | rand() 已修正 模數偏差錯誤。這表示在 64 位元機器上,使用特定種子產生的序列可能與 PHP 7.1 不同。 |
7.1.0 | rand() 已成為 mt_rand() 的別名。 |
範例 #1 rand() 範例
<?php
echo rand(), "\n";
echo rand(), "\n";
echo rand(5, 15), "\n";
?>
上述範例的輸出類似於
7771 22264 11
min
和 max
的範圍必須在 getrandmax() 的範圍內,也就是 (max
- min
) <= getrandmax()。否則,rand() 可能會返回品質不佳的隨機數。