最新公告
  • 欢迎您光临码农资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!加入我们
  • PHP生成随机数的函数rand()与mt_rand()的区别

    我们在编写程序逻辑时,少不了要生成一些随机的数字。VIP共享吧就说一说在PHP中生成随机数的两个函数,rand()与mt_rand()都是用于产生一个指定范围内单独随机数的函数。既然他们都是用于产生一个随机数,那么他们有什么区别呢?

    PHP生成随机数的函数rand()与mt_rand()的区别

    PHP中的rand()函数

    rand() 函数返回随机整数。

    误法:

        rand(min,max)

    min,max可选。规定随机数产生的范围。

    注:如果没有提供可选参数 min 和 max,rand() 返回 0 到 RAND_MAX 之间的伪随机整数

    举例说明:

    PHP rand()生成一个任意的随机数与一个在5与20之间的随机数

    Snipaste_2019-03-25_19-52-32.png

        echorand();//得到一个不定位数的随机数echo '<br/>';echorand(6, 30);//在6~30之间取一个数

    结果:4565 24

    PHP中的mt_rand()函数

    PHP中的mt_rand()函数与rand()在用法与功能上一至,但mt_rand()函数返回随机数的速度是rand()函数的四倍。

    上面的代码可以修改成:

        echomt_rand();//得到一个不定位数的随机数echo '<br/>';echomt_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()函数效率快!

    想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
    本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
    如有侵权请发送邮件至1943759704@qq.com删除

    码农资源网 » PHP生成随机数的函数rand()与mt_rand()的区别
    • 20会员总数(位)
    • 16193资源总数(个)
    • 1105本周发布(个)
    • 22 今日发布(个)
    • 115稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情