PHP 7 中生成随机数字的推荐函数是 random_int(),它是密码学安全的整数生成器,适用于验证码、令牌等高安全场景,底层调用操作系统真随机源,不支持时直接报错而非降级。

PHP 7 中生成随机数字的推荐函数是 random_int()。
它专为密码学安全设计,能生成指定范围内的伪随机整数,适用于验证码、令牌、密钥等对安全性要求高的场景。
核心特点:
- 返回整数类型,不是字符串
- 必须传入最小值和最大值两个参数
- 底层使用操作系统级真随机源(如 Windows 的
CryptGenRandom、Linux 的getrandom(2)) - 若系统不支持,会直接抛出
Error,不会退化为弱随机
基本用法:
立即学习“PHP免费学习笔记(深入)”;
// 生成 1 到 100 之间的随机整数 $number = random_int(1, 100); // 生成 32 位无符号整数(0 到 2147483647) $uint32 = random_int(0, 2147483647);
对比其他函数:
-
mt_rand():速度快、分布均匀,但不安全,不适合敏感用途 -
rand():已过时,随机性差,PHP 8.4+ 中已被弃用 -
random_int()是 PHP 7+ 官方唯一推荐的安全随机整数生成方式
注意事项:
- 不要用于生成大量高频随机数(如每秒万次),因底层调用可能有系统开销
- 范围不能为负数起始(如
random_int(-5, 5)合法,但random_int(PHP_INT_MIN, PHP_INT_MAX)可能触发错误) - 若需随机浮点数,应基于
random_int()自行换算,不要用lcg_value()等非安全函数
如果只是生成纯数字字符串(比如 6 位短信验证码),可结合 random_int() 构建:
$code = str_pad(random_int(0, 999999), 6, '0', STR_PAD_LEFT);



















