(PHP 4, PHP 5, PHP 7, PHP 8)
mt_rand — 通过梅森旋转(Mersenne Twister)随机数生成器生成随机值
$min
, int $max
): int
本函数并不会生成安全加密的值,不应用于加密用途。若需要安全加密的值,考虑使用 random_int()、random_bytes() 或 openssl_random_pseudo_bytes() 替代。
很多老的 libc 的随机数发生器具有一些不确定和未知的特性而且很慢。mt_rand() 函数是旧的 rand() 的临时替代。该函数用了» 梅森旋转中已知的特性作为随机数发生器,它可以产生随机数值的平均速度比 libc 提供的 rand() 快四倍。
如果没有提供可选参数 min
和
max
,mt_rand()
返回 0 到 mt_getrandmax()
之间的伪随机数。例如想要 5 到 15(包括 5 和 15)之间的随机数,用
mt_rand(5, 15)
。
返回 min
(或者 0)到 max
(或者是到
mt_getrandmax(),包含这个值)之间的随机整数,如果
max
小于 min
则返回 false
。
版本 | 说明 |
---|---|
7.2.0 | rand() 已收到模偏差的 错误修复。这意味着使用特定种子生成的序列可能与 64 位机器上的 PHP 7.1.0 不同。 |
7.1.0 | rand() 成为 mt_rand() 的别名。 |
7.1.0 |
mt_rand() 成为使用梅森旋转(Mersenne
Twister)算法的固定、正确版本。要使用旧行为,请使用 mt_srand() 并将
MT_RAND_PHP 作为第二个参数。
|
示例 #1 mt_rand() 例子
<?php
echo mt_rand() . "\n";
echo mt_rand() . "\n";
echo mt_rand(5, 15);
?>
以上例程的输出类似于:
1604716014 1478613278 6
min
max
的范围必须在 getrandmax()
范围内。即 (max
- min
) <=
getrandmax()。否则,rand() 可能会返回质量差的随机数。