mt_rand()是PHP中基于Mersenne Twister算法的非密码学安全随机整数生成函数,支持负数范围、包含边界,参数顺序不可颠倒;需用除法换算获取浮点数;密码学场景应改用random_int()或random_bytes()。

mt_rand() 是 PHP 中生成随机整数的函数,基于 Mersenne Twister 算法,比旧的 rand() 更快、更均匀,也更适合一般用途(但不适用于密码学场景)。
基本用法:生成指定范围内的随机整数
语法:mt_rand([int $min, int $max])
如果不传参数,默认等价于 mt_rand(0, mt_getrandmax()),即返回 0 到系统最大随机值之间的整数(通常是 2147483647)。
常用写法:
- mt_rand(1, 10) → 返回 1 到 10 之间的随机整数(含 1 和 10)
- mt_rand(0, 99) → 返回 0~99 的随机整数,适合做两位随机数
- mt_rand(-5, 5) → 支持负数范围
注意边界:包含两端,且参数顺序不能反
$min 必须小于或等于 $max,否则会触发警告并返回 false。
本套教程,以一个真实的学校教学管理系统为案例,手把手教会您如何在一张白纸上,从零开始,一步一步的用ThinkPHP5框架快速开发出一个商业项目,让您快速入门TP5项目开发。
例如:
- mt_rand(10, 1) ❌ 错误,会报 Warning 并返回 false
- mt_rand(1, 1) ✅ 正确,恒返回 1
生成随机浮点数?需要自己换算
`mt_rand()` 只返回整数,如需随机小数(比如 0.0 ~ 1.0),可结合除法:
- mt_rand() / mt_getrandmax() → 得到 [0.0, 1.0] 区间内的浮点数(含 0 和 1)
- 想要 0.0 ~ 1.0 不含 1.0?用:mt_rand() / (mt_getrandmax() + 1)
- 想要 1.23 ~ 4.56 范围的浮点数?1.23 + (4.56 - 1.23) * mt_rand() / mt_getrandmax()
安全提醒:别用它做密码、Token 或验证码密钥
mt_rand() 不是加密安全的随机源。它的输出可被预测(尤其在知道部分输出时),PHP 7.0+ 推荐使用以下替代:
- random_int($min, $max) → 安全整数(推荐用于 Token、盐值、验证码等)
- random_bytes($length) → 安全字节流,可用于生成密钥或哈希盐
例如:不要用 mt_rand() 生成支付订单号的防重随机段,而应优先用 random_int() 或 uniqid() + random_bytes()。
不复杂但容易忽略










