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 session机制
Jul 17 PHP
根据ip调用新浪api获取城市名并转成拼音
Mar 07 PHP
php中数字0和空值的区别分析
Jun 05 PHP
PHP中Fatal error session_start()错误解决步骤
Aug 05 PHP
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
Dec 01 PHP
thinkPHP模型初始化实例分析
Dec 03 PHP
PHP中spl_autoload_register()函数用法实例详解
Jul 18 PHP
PHP编程快速实现数组去重的方法详解
Jul 22 PHP
PHP常用字符串函数小结(推荐)
Aug 05 PHP
PHP实现会员账号单唯一登录的方法分析
Mar 07 PHP
PHP示例演示发送邮件给某个邮箱
Apr 03 PHP
PHP ElasticSearch做搜索实例讲解
Feb 05 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代码保护--Zend Guard的使用详解
2013/06/03 PHP
bindParam和bindValue的区别以及在Yii2中的使用详解
2018/03/12 PHP
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二
2011/12/31 Javascript
js创建表单元素并使用submit进行提交
2014/08/14 Javascript
通过js为元素添加多项样式,浏览器全兼容写法
2014/08/30 Javascript
javascript批量修改文件编码格式的方法
2015/01/27 Javascript
JS实现黑客帝国文字下落效果
2015/09/01 Javascript
JS判断当前页面是否在微信浏览器打开的方法
2015/12/08 Javascript
动态加载JavaScript文件的两种方法
2016/04/22 Javascript
举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历
2016/07/07 Javascript
关于JavaScript 原型链的一点个人理解
2016/07/31 Javascript
基于angular中的重要指令详解($eval,$parse和$compile)
2016/10/21 Javascript
nodejs服务搭建教程 nodejs访问本地站点文件
2017/04/07 NodeJs
VueJS如何引入css或者less文件的一些坑
2017/04/25 Javascript
jQuery日期范围选择器附源码下载
2017/05/23 jQuery
解决Vue项目中tff报错的问题
2020/10/21 Javascript
[02:34]2016完美“圣”典风云人物:BurNIng专访
2016/12/10 DOTA
pandas.DataFrame选取/排除特定行的方法
2018/07/03 Python
Python简单过滤字母和数字的方法小结
2019/01/09 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
2019/04/01 Python
使用python画社交网络图实例代码
2019/07/10 Python
python 命令行传入参数实现解析
2019/08/30 Python
Selenium启动Chrome时配置选项详解
2020/03/18 Python
实例教程 利用html5和css3打造一款创意404页面
2014/10/20 HTML / CSS
super关键字的用法
2012/04/10 面试题
华美博弈C/VC工程师笔试试题
2012/07/16 面试题
银行会计职员个人的自我评价
2013/09/29 职场文书
外语系毕业生找工作的求职信
2013/11/28 职场文书
主要负责人任命书
2014/06/06 职场文书
加油口号大全
2014/06/13 职场文书
教师自我剖析材料(四风问题)
2014/09/30 职场文书
2015年小学生自我评价范文
2015/03/03 职场文书
2015年学校团委工作总结
2015/05/26 职场文书
遗失证明范文
2015/06/19 职场文书
【DOTA2】总决赛血虐~ XTREME GAMING vs MAGMA - OGA DOTA PIT 2022 CN
2022/04/02 DOTA
python中Pyqt5使用Qlabel标签播放视频
2022/04/22 Python