PHP Conference Japan 2024

rand

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

rand產生一個亂數整數

說明

rand(): 整數
rand(整數 $min, 整數 $max): 整數

如果未指定選用的 minmax 參數,rand() 會回傳一個介於 0 和 getrandmax() 之間的偽亂數整數。例如,如果您想要介於 5 和 15(含)之間的亂數,請使用 rand(5, 15)

注意

此函式不會產生密碼學安全的數值,而且*不得*用於密碼學目的,或需要回傳值不可猜測的用途。

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

注意在某些平台(例如 Windows)上,getrandmax() 的最大值只有 32767。如果您需要大於 32767 的範圍,指定 minmax 參數可以讓您建立更大的範圍,或者考慮使用 mt_rand() 函式。

注意自 PHP 7.1.0 起,rand() 使用與 mt_rand() 相同的隨機數產生器。為了保持向下相容性,rand() 允許 max 小於 min,而 mt_rand() 在這種情況下會返回 false

參數

min

要返回的最小值(預設值:0)

max

要返回的最大值(預設值:getrandmax()

傳回值

介於 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

注意事項

警告

minmax 的範圍必須在 getrandmax() 的範圍內,也就是 (max - min) <= getrandmax()。否則,rand() 可能會返回品質不佳的隨機數。

參見

  • srand() - 設定隨機數產生器的種子
  • getrandmax() - 顯示最大的隨機值
  • mt_rand() - 使用 Mersenne Twister 隨機數產生器產生隨機值
  • random_int() - 取得加密安全的、均勻分佈的整數
  • random_bytes() - 取得加密安全的隨機位元組

新增筆記

使用者貢獻的筆記

此頁面沒有使用者貢獻的筆記。
To Top