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 iconv函数的使用详解
Jun 09 PHP
AJAX的跨域访问-两种有效的解决方法介绍
Jun 22 PHP
PHP输出一个等腰三角形的方法
May 12 PHP
php给图片加文字水印
Jul 31 PHP
php实现smarty模板无限极分类的方法
Dec 07 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
Dec 23 PHP
Yii2.0中的COOKIE和SESSION用法
Aug 12 PHP
PHP目录操作实例总结
Sep 27 PHP
Linux平台PHP5.4设置FPM线程数量的方法
Nov 09 PHP
php中时间函数date及常用的时间计算
May 12 PHP
php实现mysql连接池效果实现代码
Jan 25 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
Nov 23 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
如何给phpadmin一个保护
2006/10/09 PHP
mysql_num_rows VS COUNT 效率问题分析
2011/04/23 PHP
jQuery EasyUI API 中文文档 - DateBox日期框
2011/10/15 PHP
PHP导入导出Excel代码
2015/07/07 PHP
php正则表达式学习笔记
2015/11/13 PHP
关于Laravel-admin的基础用法总结和自定义model详解
2019/10/08 PHP
PHP7修改的函数
2021/03/09 PHP
jQuery判断checkbox是否选中的3种方法
2014/08/12 Javascript
node.js 动态执行脚本
2016/06/02 Javascript
Javascript之Number对象介绍
2016/06/07 Javascript
原生JS实现图片网格式渐显、渐隐效果
2017/06/05 Javascript
node使用promise替代回调函数
2018/05/07 Javascript
Vue中的验证登录状态的实现方法
2019/03/09 Javascript
前端开发之便利店收银系统代码
2019/12/27 Javascript
Nodejs + Websocket 指定发送及群聊的实现
2020/01/09 NodeJs
javascript 易错知识点实例小结
2020/04/25 Javascript
如何利用 JS 脚本实现网页全自动秒杀抢购功能
2020/10/12 Javascript
python通过pil将图片转换成黑白效果的方法
2015/03/16 Python
python判断windows系统是32位还是64位的方法
2015/05/11 Python
python对数组进行反转的方法
2015/05/20 Python
Python中的数学运算操作符使用进阶
2016/06/20 Python
python类:class创建、数据方法属性及访问控制详解
2016/07/25 Python
Python实现计算长方形面积(带参数函数demo)
2020/01/18 Python
python实现门限回归方式
2020/02/29 Python
Python HTMLTestRunner库安装过程解析
2020/05/25 Python
利用Python实现Json序列化库的方法步骤
2020/09/09 Python
简单html5代码获取地理位置
2014/03/31 HTML / CSS
HTML5跳转小程序wx-open-launch-weapp的示例代码
2020/07/16 HTML / CSS
玉兰油美国官网:OLAY美国
2018/10/25 全球购物
拉丁舞学习者的自我评价
2013/10/27 职场文书
2014年五四青年节活动方案
2014/03/29 职场文书
员工考核评语大全
2014/04/26 职场文书
知识改变命运演讲稿
2014/05/21 职场文书
2019脱贫攻坚工作总结报告范本!
2019/08/06 职场文书
Python Pandas读取Excel日期数据的异常处理方法
2022/02/28 Python
css弧边选项卡的项目实践
2023/05/07 HTML / CSS