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 相关文章推荐
phpMyAdmin 安装配置方法和问题解决
Jun 08 PHP
discuz的php防止sql注入函数
Jan 17 PHP
php 数组的一个悲剧?
May 11 PHP
php 按指定元素值去除数组元素的实现方法
Nov 04 PHP
php 魔术方法详解
Nov 11 PHP
php提交表单发送邮件的方法
Mar 20 PHP
PHP实现文件上传下载实例
Oct 18 PHP
Yii全局函数用法示例
Jan 22 PHP
Yii2 批量插入、更新数据实例
Mar 15 PHP
利用php-cli和任务计划实现订单同步功能的方法
May 03 PHP
PHP魔术方法之__call与__callStatic使用方法
Jul 23 PHP
解决laravel资源加载路径设置的问题
Oct 14 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实现下载断点续传的方法
2014/11/12 PHP
getimagesize获取图片尺寸实例
2014/11/15 PHP
PHP微信开发之根据用户回复关键词\位置返回附近信息
2016/06/24 PHP
超级24小时弹窗代码 24小时退出弹窗代码 100%弹窗代码(IE only)
2010/06/11 Javascript
Jquery+WebService 校验账号是否已被注册的代码
2010/07/12 Javascript
ajax请求get与post的区别总结
2013/11/04 Javascript
jquery引用方法时传递参数原理分析
2014/10/13 Javascript
JavaScript中的继承方式详解
2015/02/11 Javascript
JavaScript中Number.MAX_VALUE属性的使用方法
2015/06/04 Javascript
javascript实现页面刷新时自动清空表单并选中的方法
2015/07/18 Javascript
jQuery模拟360浏览器切屏效果幻灯片(附demo源码下载)
2016/01/29 Javascript
Vue.directive自定义指令的使用详解
2017/03/10 Javascript
vue单页缓存存在的问题及解决方案(小结)
2018/09/25 Javascript
Vue 框架之动态绑定 css 样式实例分析
2018/11/14 Javascript
详解Vscode中使用Eslint终极配置大全
2019/11/08 Javascript
python实现定时同步本机与北京时间的方法
2015/03/24 Python
python负载均衡的简单实现方法
2018/02/04 Python
Python实现Selenium自动化Page模式
2019/07/14 Python
通过实例了解Python异常处理机制底层实现
2020/07/23 Python
CSS3属性box-sizing使用指南
2014/12/09 HTML / CSS
ET Mall东森购物网:东森严选
2017/03/06 全球购物
美国电子产品主要品牌的授权在线零售商:DataVision
2019/03/23 全球购物
英国最大的独立摄影零售商:Park Cameras
2019/11/27 全球购物
Linux内核的同步机制是什么?主要有哪几种内核锁
2013/01/03 面试题
《夜晚的实验》教学反思
2014/02/19 职场文书
终止劳动合同协议书
2014/04/14 职场文书
大学活动总结模板
2014/07/10 职场文书
优秀毕业生的求职信
2014/07/21 职场文书
幼儿教师师德师风演讲稿
2014/08/22 职场文书
法律意见书范本
2015/06/04 职场文书
婚礼男方父母答谢词
2015/09/29 职场文书
2016年企业先进员工事迹材料
2016/02/25 职场文书
大学生奖学金获奖感言(范文)
2019/08/15 职场文书
Python实现打乒乓小游戏
2021/09/25 Python
浅析Python中的随机采样和概率分布
2021/12/06 Python
js作用域及作用域链工作引擎
2022/07/07 Javascript