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 相关文章推荐
实现dedecms全站URL静态化改造的代码
Mar 29 PHP
Mysql和网页显示乱码解决方法集锦
Mar 27 PHP
PHP迅雷、快车、旋风下载专用链转换代码
Jun 15 PHP
Codeigniter实现多文件上传并创建多个缩略图
Jun 12 PHP
简单分析ucenter 会员同步登录通信原理
Aug 25 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
Nov 04 PHP
PHP使用PHPexcel导入导出数据的方法
Nov 14 PHP
php中实现进程锁与多进程的方法
Sep 18 PHP
Laravel框架基于ajax实现二级联动功能示例
Jan 17 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
Apr 03 PHP
laravel框架中控制器的创建和使用方法分析
Nov 23 PHP
在 Laravel 6 中缓存数据库查询结果的方法
Dec 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
php访问查询mysql数据的三种方法
2006/10/09 PHP
php expects parameter 1 to be resource, array given 错误
2011/03/23 PHP
php mailer类调用远程SMTP服务器发送邮件实现方法
2016/03/04 PHP
PHP合并数组函数array_merge用法分析
2017/02/17 PHP
php事务回滚简单实现方法示例
2017/03/28 PHP
彻底搞懂PHP 变量结构体
2017/10/11 PHP
jQuery 使用手册(五)
2009/09/23 Javascript
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
DOM2非标准但却支持很好的几个属性小结
2012/01/21 Javascript
jquery获取被勾选的checked(选中)的那一行的3列和4列的值
2013/07/04 Javascript
Jquery实现自定义窗口随意的拖拽
2014/03/12 Javascript
nodejs事件的监听与触发的理解分析
2015/02/12 NodeJs
jquery实现模拟百分比进度条渐变效果代码
2015/10/29 Javascript
jQuery使用中可能被XSS攻击的一些危险环节提醒
2016/05/24 Javascript
BootStrap与Select2使用小结
2017/02/17 Javascript
echarts学习笔记之箱线图的分析与绘制详解
2017/11/22 Javascript
vue写一个组件
2018/04/09 Javascript
JQuery animate动画应用示例
2019/05/14 jQuery
微信小程序实现搜索框功能及踩过的坑
2020/06/19 Javascript
python登录QQ邮箱发信的实现代码
2013/02/10 Python
探究数组排序提升Python程序的循环的运行效率的原因
2015/04/01 Python
Python实现的本地文件搜索功能示例【测试可用】
2018/05/30 Python
深入浅析Python获取对象信息的函数type()、isinstance()、dir()
2018/09/17 Python
CSS3实现复选框动画特效示例代码
2016/09/27 HTML / CSS
俄罗斯眼镜网: optikaworld
2016/07/31 全球购物
印度服装购物网站:Limeroad
2018/09/26 全球购物
瑞典的玛丽小姐:Miss Mary of Sweden
2019/02/13 全球购物
如何写一个自定义标签
2012/12/28 面试题
数控专业应届生求职信
2013/11/27 职场文书
司法助理专业自荐书
2014/06/13 职场文书
2015新年寄语大全
2014/12/08 职场文书
2015年小学数学教研组工作总结
2015/05/21 职场文书
休假证明书
2015/06/24 职场文书
2016党性教育学习心得体会
2016/01/21 职场文书
2016年优秀团员事迹材料
2016/02/25 职场文书
PyQt5 QThread倒计时功能的实现代码
2021/04/02 Python