PHP5中生成随机数最常用可靠的方法是mt_rand(),基于Mersenne Twister算法,性能更好、分布更均匀;rand()次之;浮点数需用mt_rand()/mt_getrandmax()换算;uniqid()和time()非真随机,不适用安全场景。

PHP5 中生成随机数字最常用、最可靠的方法是使用 rand() 或 mt_rand() 函数。
用 rand() 生成指定范围内的整数
rand() 是 PHP5 内置的随机数函数,语法简单:
-
rand($min, $max):生成一个介于 $min 和 $max(含)之间的随机整数 - 例如:
echo rand(1, 100);可能输出 42、87 等任意 1–100 的整数 - 若省略参数(
rand()),默认等价于rand(0, getrandmax()),但不推荐省略
推荐用 mt_rand() 获得更好性能和随机性
mt_rand() 基于 Mersenne Twister 算法,比 rand() 更快、随机分布更均匀,PHP5 完全支持:
- 用法与
rand()完全一致:mt_rand(10, 99)生成两位随机整数 - 生成 0–9 的一位随机数字:
mt_rand(0, 9) - 生成 1000–9999 的四位随机数:
mt_rand(1000, 9999)
生成随机浮点数(如 0.0–1.0 之间)
PHP5 没有内置随机浮点函数,但可用 mt_rand() 配合除法模拟:
立即学习“PHP免费学习笔记(深入)”;
-
$f = mt_rand() / mt_getrandmax();—— 得到 [0.0, 1.0] 区间浮点数 - 扩展为 [a, b) 区间:
$f = $a + ($b - $a) * (mt_rand() / mt_getrandmax()); - 例如生成 0.0 到 5.0 之间的随机浮点:
0 + 5 * (mt_rand() / mt_getrandmax())
注意:不要用 uniqid() 或 time() 当随机数
这些函数生成的是**唯一标识符或时间戳**,不是真随机数:
-
uniqid()依赖微秒时间,连续调用易预测 -
time()每秒只变一次,完全不具备随机性 - 密码、抽奖等对安全性有要求的场景,PHP5 不建议用上述函数,应升级到 PHP7+ 使用
random_int()或random_bytes()



















