PHP:
生成随机数

如何操作:

PHP 提供了几个生成随机数的函数,但最常用的是 rand()mt_rand(),以及用于加密目的的 random_int()

要生成一个简单的随机数,介于 0 和 getrandmax()(rand() 可返回的最大可能值)之间,你可以使用:

echo rand();

对于一个更具体的范围,例如介于 1 和 100 之间:

echo rand(1, 100);

然而,mt_rand() 在速度和随机性方面是更好的选择:

echo mt_rand(1, 100);

输出结果对于两者都可能是介于 1 和 100 之间的任何数,这取决于随机化,例如 42

对于加密或安全环境,其中不可预测性至关重要,random_int() 是首选,因为它生成加密安全的伪随机整数:

echo random_int(1, 100);

同样,输出是介于 1 和 100 之间的随机数,像 84,但具有更强的随机性保证。

深入探讨

rand() 函数自 PHP 早期版本以来一直存在,作为生成随机数的初步方法。然而,由于其算法相对可预测,对于需要高度随机性的应用来说,它并非最佳选择。

mt_rand(),在 PHP 4 中引入,基于 Mersenne Twister 算法 - 在速度和能够生成的随机性方面远优于 rand()。它很快成为大多数非加密需求的首选选项。

对于安全敏感的应用程序,PHP 7 引入了 random_int(),使用来自系统随机数生成器的随机字节生成加密安全的伪随机整数。它比 rand()mt_rand() 显著更加安全,使其成为生成令牌、密钥或其他可能因可预测性而导致安全漏洞的元素的最佳选择。

尽管有这些改进,根据应用程序的上下文选择正确的函数至关重要。对于一般用途,mt_rand() 就足够了,但对于可能成为攻击目标或被利用的任何东西,random_int() 是去路,提供了随机性和安全性。