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 31 PHP
php echo()和print()、require()和include()函数区别说明
Mar 27 PHP
php中mysql模块部分功能的简单封装
Sep 30 PHP
PHP ? EasyUI DataGrid 资料取的方式介绍
Nov 07 PHP
PHP实现今天是星期几的几种写法
Sep 26 PHP
php通过隐藏表单控件获取到前两个页面的url
Sep 09 PHP
Yii使用ajax验证显示错误messagebox的解决方法
Dec 03 PHP
PHP实现Javascript中的escape及unescape函数代码分享
Feb 10 PHP
php array_map使用自定义的函数处理数组中的每个值
Oct 26 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
Jun 07 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
Sep 21 PHP
Yii框架自定义数据库操作组件示例
Nov 11 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
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
2016/04/20 PHP
PHP标准类(stdclass)用法示例
2016/09/28 PHP
jquery nth-child()选择器的简单应用
2010/07/10 Javascript
JS 加入收藏夹的代码(主流浏览器通用)
2013/05/13 Javascript
Javascript中的数组常用方法解析
2016/06/17 Javascript
微信小程序实现图片预加载组件
2017/01/18 Javascript
Vue.Draggable实现拖拽效果
2020/07/29 Javascript
jQuery制作全屏宽度固定高度轮播图(实例讲解)
2017/07/08 jQuery
详解webpack模块加载器兼打包工具
2018/09/11 Javascript
node.JS的crypto加密模块使用方法详解(MD5,AES,Hmac,Diffie-Hellman加密)
2020/02/06 Javascript
解决vuecli3中img src 的引入问题
2020/08/04 Javascript
解决vue2中使用elementUi打包报错的问题
2020/09/22 Javascript
编写v-for循环的技巧汇总
2020/12/01 Javascript
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
python字符串编码识别模块chardet简单应用
2015/06/15 Python
举例讲解Python中字典的合并值相加与异或对比
2016/06/04 Python
安装Python和pygame及相应的环境变量配置(图文教程)
2017/06/04 Python
Python3 XML 获取雅虎天气的实现方法
2018/02/01 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
2018/04/23 Python
使用Anaconda3建立虚拟独立的python2.7环境方法
2018/06/11 Python
pycharm 配置远程解释器的方法
2018/10/28 Python
django框架使用orm实现批量更新数据的方法
2019/06/21 Python
Python threading的使用方法解析
2019/08/28 Python
使用python采集Excel表中某一格数据
2020/05/14 Python
python调用百度AI接口实现人流量统计
2021/02/03 Python
CSS3教程(1):什么是CSS3
2009/04/02 HTML / CSS
英国最大的笔记本电脑直销专家:Laptops Direct
2019/07/20 全球购物
法国在线药房:1001Pharmacies
2021/03/07 全球购物
将"引用"作为函数参数有哪些特点
2013/04/05 面试题
文化宣传方案
2014/03/13 职场文书
小学生安全演讲稿
2014/04/25 职场文书
工作岗位说明书模板
2014/05/09 职场文书
竞选学委演讲稿
2014/09/13 职场文书
资源环境与城乡规划管理专业自荐书
2014/09/26 职场文书
鸡毛信观后感
2015/06/11 职场文书
导游词之镇江西津古渡
2019/11/06 职场文书