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通过COM使用ADODB的简单例子
Dec 31 PHP
php md5下16位和32位的实现代码
Apr 09 PHP
destoon会员注册提示“数据校验失败(2)”解决方法
Jun 21 PHP
php中get_defined_constants函数用法实例分析
May 12 PHP
PHP如何将log信息写入服务器中的log文件
Jul 29 PHP
php实现阳历阴历互转的方法
Oct 28 PHP
Symfony学习十分钟入门经典教程
Feb 03 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
Nov 22 PHP
PHP 表单提交及处理表单数据详解及实例
Dec 27 PHP
PHP使用mongoclient简单操作mongodb数据库示例
Feb 08 PHP
php面试实现反射注入的详细方法
Sep 30 PHP
在Laravel中实现使用AJAX动态刷新部分页面
Oct 15 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修正代码
2011/05/09 PHP
Laravel中使用自己编写类库的3种方法
2015/02/10 PHP
两款万能的php分页类
2015/11/12 PHP
浅析PHP echo 和 print 语句
2020/06/30 PHP
一个js实现的所谓的滑动门
2007/05/23 Javascript
javascript实现图片切换的幻灯片效果源代码
2012/12/12 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
详谈LABJS按需动态加载js文件
2015/05/07 Javascript
详解Javascript中的Object对象
2016/02/28 Javascript
Node.js操作mysql数据库增删改查
2016/03/30 Javascript
简单实现js页面切换功能
2021/01/10 Javascript
探讨Vue.js的组件和模板
2017/10/27 Javascript
vue 每次渲染完页面后div的滚动条保持在最底部的方法
2018/03/17 Javascript
微信小程序实现圆形进度条动画
2020/11/18 Javascript
JS数组扁平化(flat)方法总结详解
2019/06/24 Javascript
vue 解决路由只变化参数页面组件不更新问题
2019/11/05 Javascript
Vant Weapp组件踩坑:picker的初始赋值解决
2020/11/12 Javascript
2款Python内存检测工具介绍和使用方法
2014/06/01 Python
Python中解析JSON并同时进行自定义编码处理实例
2015/02/08 Python
python实现的守护进程(Daemon)用法实例
2015/06/02 Python
实例解析Python的Twisted框架中Deferred对象的用法
2016/05/25 Python
Python学习小技巧之列表项的拼接
2017/05/20 Python
详解Python中的Numpy、SciPy、MatPlotLib安装与配置
2017/11/17 Python
python梯度下降法的简单示例
2018/08/31 Python
Python2和Python3之间的str处理方式导致乱码的讲解
2019/01/03 Python
查看python安装路径及pip安装的包列表及路径
2019/04/03 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
2020/05/17 Python
浅析HTML5 Landmark
2020/09/11 HTML / CSS
Html5之webcoekt播放JPEG图片流
2020/09/22 HTML / CSS
HMV日本官网:全球知名的音乐、DVD和电脑游戏零售巨头
2016/08/13 全球购物
学生周末长期请假条
2014/02/15 职场文书
资源环境与城乡规划管理专业自荐书
2014/09/26 职场文书
六查六看剖析材料
2014/10/06 职场文书
副总经理岗位职责
2015/02/02 职场文书
2019生态环境保护倡议书!
2019/07/03 职场文书
2019年最新借条范本!
2019/07/08 职场文书