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函数
Oct 09 PHP
使用PHP socke 向指定页面提交数据
Jul 23 PHP
PHP中include()与require()的区别说明
Mar 10 PHP
php各种编码集详解和以及在什么情况下进行使用
Sep 11 PHP
php 记录进行累加并显示总时长为秒的结果
Nov 04 PHP
php操作JSON格式数据的实现代码
Dec 24 PHP
php后台多用户权限组思路与实现程序代码分享
Feb 13 PHP
php curl请求信息和返回信息设置代码实例
Apr 27 PHP
详解PHP中的状态模式编程
Aug 11 PHP
PHP中strcmp()和strcasecmp()函数字符串比较用法分析
Jan 07 PHP
php 如何获取文件的后缀名
Jun 05 PHP
PHP 扩展Memcached命令用法实例总结
Jun 04 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获取系统变量方法小结
2015/05/29 PHP
PHP getNamespaces()函数讲解
2019/02/03 PHP
JS实现图片无间断滚动代码汇总
2014/07/30 Javascript
jQuery提示效果代码分享
2014/11/20 Javascript
nodejs创建web服务器之hello world程序
2015/08/20 NodeJs
一系列Bootstrap导航条使用方法分享
2016/04/29 Javascript
js只执行1次的函数示例
2016/07/20 Javascript
Angular2学习笔记——详解NgModule模块
2016/12/02 Javascript
ReactNative踩坑之配置调试端口的解决方法
2017/07/28 Javascript
JavaScript函数中的this四种绑定形式
2017/08/15 Javascript
centos 上快速搭建ghost博客方法分享
2018/05/23 Javascript
js实现文件上传功能 后台使用MultipartFile
2018/09/08 Javascript
jQuery zTree插件快速实现目录树
2019/08/16 jQuery
layui动态表头的实现代码
2019/08/22 Javascript
解决Echarts2竖直datazoom滑动后显示数据不全的问题
2020/07/20 Javascript
windows下python连接oracle数据库
2017/06/07 Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
2018/02/01 Python
python 读入多行数据的实例
2018/04/19 Python
python后端接收前端回传的文件方法
2019/01/02 Python
python 类的继承 实例方法.静态方法.类方法的代码解析
2019/08/23 Python
Python 实现大整数乘法算法的示例代码
2019/09/17 Python
浅谈对pytroch中torch.autograd.backward的思考
2019/12/27 Python
Pytorch中.new()的作用详解
2020/02/18 Python
Python+Appium实现自动化测试的使用步骤
2020/03/24 Python
python 还原梯度下降算法实现一维线性回归
2020/10/22 Python
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
2014/05/07 HTML / CSS
意大利奢侈品综合电商网站:MODES
2019/12/14 全球购物
新加坡最早生产电动滑板车的制造商之一:FunsToTheFore
2020/09/08 全球购物
小学中秋节活动方案
2014/02/06 职场文书
小摄影师教学反思
2014/04/27 职场文书
化工操作工岗位职责
2014/04/29 职场文书
2014年信息技术工作总结
2014/12/16 职场文书
初中成绩单评语
2014/12/29 职场文书
离婚案件上诉状
2015/05/23 职场文书
2016感恩父亲节主题广播稿
2015/12/18 职场文书
《小乌鸦爱妈妈》教学反思
2016/02/19 职场文书