PHP中函数rand和mt_rand的区别比较


Posted in PHP onDecember 26, 2012

PHP函数rand和mt_rand


mt_rand() 比rand() 快四倍


很多老的 libc 的随机数发生器具有一些不确定和未知的特性而且很慢。PHP 的 rand() 函数默认使用 libc 随机数发生器。mt_rand() 函数是非正式用来替换它的。该函数用了 Mersenne Twister 中已知的特性作为随机数发生器,mt_rand() 可以产生随机数值的平均速度比 libc 提供的 rand() 快四倍。


mt_rand() 比rand() 快四倍


mt_rand — 生成更好的随机数


(PHP 3 >= 3.0.6, PHP 4, PHP 5)


int mt_rand ( [int min, int max] )


很多老的 libc 的随机数发生器具有一些不确定和未知的特性而且很慢。PHP 的 rand() 函数默认使用 libc 随机数发生器。mt_rand() 函数是非正式用来替换它的。该函数用了 Mersenne Twister(马其塞旋转) 中已知的特性作为随机数发生器,它可以产生随机数值的平均速度比 libc 提供的 rand() 快四倍。


如果没有提供可选参数 min 和 max,mt_rand() 返回


0 到 RAND_MAX 之间的伪随机数。


例如想要 5 到 15(包括 5 和 15)之间的随机数,用 mt_rand(5, 15)。


注: 自 PHP 4.2.0 起,不再需要用 srand() 或 mt_srand() 函数给随机数生成器播种,现已自动完成。


rand — 产生一个随机整数


(PHP 3, PHP 4, PHP 5)


int rand ( [int min, int max] )


如果没有提供可选参数 min 和 max,rand() 返回 0 到 RAND_MAX 之间的伪随机整数。例如想要 5 到 15(包括 5 和 15)之间的随机数,用 rand(5, 15)。


注: 在某些平台下(例如 Windows)RAND_MAX 只有 32768。如果需要的范围大于 32768,那么指定 min 和 max 参数就可以生成大于 RAND_MAX的数了,或者考虑用 mt_rand() 来替代之。


注: 自 PHP 4.2.0 起,不再需要用 srand() 或 mt_srand() 函数给随机数生成器播种,现已自动完成。

mt_rand定义和用法

mt_rand() 使用 Mersenne Twister 算法返回随机整数。

语法
mt_rand(min,max)说明
如果没有提供可选参数 min 和 max,mt_rand() 返回 0 到 RAND_MAX 之间的伪随机数。例如想要 5 到 15(包括 5 和 15)之间的随机数,用 mt_rand(5, 15)。

很多老的 libc 的随机数发生器具有一些不确定和未知的特性而且很慢。PHP 的 rand() 函数默认使用 libc 随机数发生器。mt_rand() 函数是非正式用来替换它的。该函数用了 Mersenne Twister 中已知的特性作为随机数发生器,它可以产生随机数值的平均速度比 libc 提供的 rand() 快四倍。
提示和注释
注释:自 PHP 4.2.0 起,不再需要用 srand() 或 mt_srand() 函数给随机数发生器播种,现在已自动完成。

注释:在 3.0.7 之前的版本中,max 的含义是 range 。要在这些版本中得到和上例相同 5 到 15 的随机数,简短的例子是 mt_rand (5, 11)。
例子

在本例中,我们会返回一些随机数:

<?php 
echo(mt_rand()); 
echo(mt_rand()); 
echo(mt_rand(10,100)); 
?>

输出类似:

3150906288
513289678
35

PHP 相关文章推荐
php学习笔记之面向对象编程
Dec 29 PHP
php中使用preg_replace函数匹配图片并加上链接的方法
Feb 06 PHP
php中实现可以返回多个值的函数实例
Mar 21 PHP
学习php设计模式 php实现抽象工厂模式
Dec 07 PHP
46 个非常有用的 PHP 代码片段
Feb 16 PHP
php实现图片上传时添加文字和图片水印技巧
Apr 18 PHP
Yii调试查看执行SQL语句的方法
Jul 15 PHP
php实现博客,论坛图片防盗链的方法
Oct 15 PHP
PHP结合jquery ajax实现上传多张图片,并限制图片大小操作示例
Mar 01 PHP
微信公众号实现扫码获取微信用户信息(网页授权)
Apr 09 PHP
PHP从零开始打造自己的MVC框架之类的自动加载实现方法详解
Jun 03 PHP
PHP使用PDO实现mysql防注入功能详解
Dec 20 PHP
php中unlink()、mkdir()、rmdir()等方法的使用介绍
Dec 21 #PHP
php和javascript之间变量的传递实现代码
Dec 19 #PHP
ajax php传递和接收变量实现思路及代码
Dec 19 #PHP
PHP编码转换函数 自动转换字符集支持数组转换
Dec 16 #PHP
PHP获取http请求的头信息实现步骤
Dec 16 #PHP
php获取通过http协议post提交过来xml数据及解析xml
Dec 16 #PHP
mysql 查询指定日期时间内sql语句实现原理与代码
Dec 16 #PHP
You might like
php $_SERVER当前完整url的写法
2009/11/12 PHP
php中simplexml_load_string使用实例分享
2014/02/13 PHP
php实现的Timer页面运行时间监测类
2014/09/24 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
2015/12/10 PHP
使用PHP实现微信摇一摇周边红包
2016/01/04 PHP
优化WordPress中文章与评论的时间显示
2016/01/12 PHP
深入剖析PHP中printf()函数格式化使用
2016/05/23 PHP
ThinkPHP实现附件上传功能
2017/04/27 PHP
网页里控制图片大小的相关代码
2006/06/13 Javascript
JavaScript进阶教程(第四课第一部分)
2007/04/05 Javascript
js自动下载文件到本地的实现代码
2013/04/28 Javascript
jQuery+jsp实现省市县三级联动效果(附源码)
2015/12/03 Javascript
基于bootstrap实现广告轮播带图片和文字效果
2016/07/22 Javascript
JSON与XML的区别对比及案例应用
2016/11/11 Javascript
JavaScript中EventLoop介绍
2018/01/22 Javascript
JS引用传递与值传递的区别与用法分析
2018/06/01 Javascript
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
vue2.0 路由模式mode=&quot;history&quot;的作用
2018/10/18 Javascript
微信小程序拖拽排序列表的示例代码
2020/07/08 Javascript
[48:28]完美世界DOTA2联赛循环赛FTD vs Magma第二场 10月30日
2020/10/31 DOTA
使用Python下的XSLT API进行web开发的简单教程
2015/04/15 Python
Python 实现PS滤镜的旋涡特效
2020/12/03 Python
虚拟环境及venv和virtualenv的区别说明
2021/02/05 Python
HTML5新特性之用SVG绘制微信logo
2016/02/03 HTML / CSS
英国家庭家具、照明和花园家具购物网站:Furniture123
2018/12/31 全球购物
英国奢侈品概念店:Base Blu
2019/05/16 全球购物
Jacques Lemans德国:奥地利钟表品牌
2019/12/26 全球购物
屈臣氏菲律宾官网:Watsons菲律宾
2020/06/30 全球购物
工程造价管理专业大专生求职信
2013/10/06 职场文书
大学生个人自我鉴定
2013/12/03 职场文书
人力资源管理专业应届生求职信
2014/04/24 职场文书
小露珠教学反思
2014/04/30 职场文书
广场舞大赛策划方案
2014/05/31 职场文书
任命书范本大全
2014/06/06 职场文书
公文写作指导之倡议书!
2019/07/03 职场文书
SpringBoot实现异步事件驱动的方法
2021/06/28 Java/Android