PHP生成随机数的函数rand()与mt_rand()的区别
我们在编写程序逻辑时,少不了要生成一些随机的数字。VIP共享吧就说一说在PHP中生成随机数的两个函数,rand()与mt_rand()都是用于产生一个指定范围内单独随机数的函数。既然他们都是用于产生一个随机数,那么他们有什么区别呢?
PHP中的rand()函数
rand() 函数返回随机整数。
误法:
rand(min,max)
min,max可选。规定随机数产生的范围。
注:如果没有提供可选参数 min 和 max,rand() 返回 0 到 RAND_MAX 之间的伪随机整数
举例说明:
PHP rand()生成一个任意的随机数与一个在5与20之间的随机数
echo rand();//得到一个不定位数的随机数 echo '<br/>'; echo rand(6, 30);//在6~30之间取一个数
结果:4565 24
PHP中的mt_rand()函数
PHP中的mt_rand()函数与rand()在用法与功能上一至,但mt_rand()函数返回随机数的速度是rand()函数的四倍。
上面的代码可以修改成:
echo mt_rand();//得到一个不定位数的随机数 echo '<br/>'; echo mt_rand(6, 30);//在6~30之间取一个数
rand() 函数默认使用 libc 随机数发生器,很多老的 libc 的随机数发生器具有一些不确定和未知的特性而且效率很低;
mt_rand() 则是用了 Mersenne Twister 中已知的特性作为随机数发生器,它产生随机数值的平均速度比 libc 提供的 rand() 快四倍。
rand和mt_rand的区别
1、rand函数的取值范围是[0, RAND_MAX],而mt_rand的取值范围是[0, mt_getrandmax()],其中RAND_MAX的值大约是0到32000,而mt_getrandmax()的值大约是0到2147483647,也就是说mt_rand的取值范围更大一些。
2、rand函数使用线性同余法,而mt_rand用的是梅森旋转算法,梅森旋转算法是目前最流行的伪随机数发生算法,比线性同余法更加安全,是目前被推荐使用的伪随机数发生算法。
3、rand函数每次从种子值中计算出一个随机数,如果没有给出种子值,将使用系统时间来作为种子值,而mt_rand则每次都使用上一次计算出来的随机数作为种子值,所以mt_rand比rand更加随机。
以上就是PHP中生成随机数的方法,个人推荐使用mt_rand()函数来生成随机数。mt_rand()函数生成的随机数比rand()函数效率快!