PHP rand() 函数

定义和用法

rand() 函数返回一个随机整数。

提示:从 PHP 7.1 开始,rand() 使用与 mt_rand() 相同的随机数生成器(Mersenne Twister),因此生成的随机数质量更高。如需更好的随机性,推荐使用 mt_rand()random_int()(加密安全)。

语法

rand(): int
rand(int $min, int $max): int
参数 描述
min 可选。规定返回的最小值(默认 0)。
max 可选。规定返回的最大值(默认 getrandmax())。

返回值

返回 minmax 之间(包含)的随机整数。如果不带参数调用,则返回 0 到 getrandmax() 之间的随机整数。

PHP 版本

  • PHP 4+
  • PHP 5+
  • PHP 7+ (PHP 7.1 开始使用 Mersenne Twister 算法)
  • PHP 8+

示例

示例 1:基本用法(无参数)

<?php
echo rand() . "<br>";
echo rand() . "<br>";
?>

输出(示例):

123456
789012

示例 2:指定范围

<?php
// 生成 1 到 100 之间的随机数
echo rand(1, 100) . "<br>";

// 生成 -10 到 10 之间的随机数
echo rand(-10, 10) . "<br>";
?>

输出(示例):

42
-3

示例 3:实际应用 - 随机验证码

<?php
function generateCode($length = 6) {
    $code = '';
    for ($i = 0; $i < $length; $i++) {
        $code .= rand(0, 9);
    }
    return $code;
}

echo "验证码: " . generateCode();
?>

输出(示例):

验证码: 482931

相关函数

注意事项

重要:
  • 在 PHP 7.1 之前,rand() 使用 libc 随机数生成器,其随机性和周期不如 mt_rand()。从 PHP 7.1 起,rand()mt_rand() 的别名,因此推荐在新代码中使用 mt_rand()random_int()
  • 如果不指定 max 参数,rand() 返回 0 到 getrandmax() 之间的数。最大值取决于平台(通常为 32767 或 2147483647)。
  • rand() 生成的随机数不适合加密安全场景,如需加密安全,请使用 random_int()random_bytes()
  • 可以使用 srand() 设置随机数种子,以便重现相同的随机数序列(通常用于测试)。