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.NET的入门教程
Oct 09 PHP
php实现的MySQL通用查询程序
Mar 11 PHP
PHP文件读写操作之文件写入代码
Jan 13 PHP
php用header函数实现301跳转代码实例
Nov 25 PHP
PHP延迟静态绑定示例分享
Jun 22 PHP
兼容PHP和Java的des加密解密代码分享
Jun 26 PHP
php array_merge_recursive 数组合并
Oct 26 PHP
php解决DOM乱码的方法示例代码
Nov 20 PHP
Yii框架数据模型的验证规则rules()被执行的方法
Dec 02 PHP
php基于PDO实现功能强大的MYSQL封装类实例
Feb 27 PHP
php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
Sep 28 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
Feb 27 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指定函数参数默认值示例代码
2013/12/04 PHP
Fedora下安装php Redis扩展笔记
2014/09/03 PHP
PHP常用操作类之通信数据封装类的实现
2017/07/16 PHP
php实现映射操作实例详解
2019/10/02 PHP
jQuery实用函数用法总结
2014/08/29 Javascript
jquery实现简单的全选和反选功能
2016/01/02 Javascript
Js得到radiobuttonlist选中值的两种方法(推荐)
2016/08/25 Javascript
Javascript使用SWFUpload进行多文件上传
2016/11/16 Javascript
js窗口震动小程序分享
2016/11/28 Javascript
jQuery select自动选中功能实现方法分析
2016/11/28 Javascript
vue-cli脚手架-bulid下的配置文件
2018/03/27 Javascript
实例解析Vue.js下载方式及基本概念
2018/05/11 Javascript
详解vue通过NGINX部署在子目录或者二级目录实践
2018/09/03 Javascript
微信小程序如何调用图片接口API并居中显示
2019/06/29 Javascript
Vue.js实现立体计算器
2020/02/22 Javascript
JS 设计模式之:工厂模式定义与实现方法浅析
2020/05/06 Javascript
npm ci命令的基本使用方法
2020/09/20 Javascript
微信小程序实现倒计时功能
2020/11/19 Javascript
使用原生javascript开发计算器实例代码
2021/02/21 Javascript
[02:57]DOTA2亚洲邀请赛 SECRET战队出场宣传片
2015/02/07 DOTA
python Django模板的使用方法(图文)
2013/11/04 Python
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
2017/02/14 Python
python实现unicode转中文及转换默认编码的方法
2017/04/29 Python
python记录程序运行时间的三种方法
2017/07/14 Python
Python标准库inspect的具体使用方法
2017/12/06 Python
python3实现网络爬虫之BeautifulSoup使用详解
2018/12/19 Python
python利用Tesseract识别验证码的方法示例
2019/01/21 Python
Python字典遍历操作实例小结
2019/03/05 Python
Python使用线程来接收串口数据的示例
2019/07/02 Python
python实现简单俄罗斯方块
2020/03/13 Python
Python 解决相对路径问题:&quot;No such file or directory&quot;
2020/06/05 Python
编写html5时调试发现脚本php等网页js、css等失效
2013/12/31 HTML / CSS
大学生应聘自荐信
2013/10/11 职场文书
安全教育感言
2014/03/04 职场文书
重阳节主题班会
2015/08/17 职场文书
详解Laravel框架的依赖注入功能
2021/05/27 PHP