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 相关文章推荐
第四节 构造函数和析构函数 [4]
Oct 09 PHP
PHP执行zip与rar解压缩方法实现代码
Dec 05 PHP
PHP数组交集的优化代码分析
Mar 06 PHP
PHP中使用register_shutdown_function函数截获fatal error示例
Apr 21 PHP
利用Fix Rss Feeds插件修复WordPress的Feed显示错误
Dec 19 PHP
PHP之图片上传类实例代码(加了缩略图)
Jun 30 PHP
一键生成各种尺寸Icon的php脚本(实例)
Feb 08 PHP
关于PHP中协程和阻塞的一些理解与思考
Aug 11 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
Mar 06 PHP
Laravel如何创建服务器提供者实例代码
Apr 15 PHP
Laravel框架查询构造器简单示例
May 08 PHP
Laravel框架下的Contracts契约详解
Mar 17 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来实现网络服务
2009/09/15 PHP
PHP使用ob_start生成html页面的方法
2014/11/07 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
2016/01/07 PHP
php实现图片上传并利用ImageMagick生成缩略图
2016/03/14 PHP
php file_get_contents取文件中数组元素的方法
2017/04/01 PHP
jQuery学习笔记之基础中的基础
2015/01/19 Javascript
JavaScript的jQuery库中ready方法的学习教程
2015/08/14 Javascript
jQuery+PHP+MySQL二级联动下拉菜单实例讲解
2015/10/27 Javascript
Angularjs注入拦截器实现Loading效果
2015/12/28 Javascript
AngularJS 依赖注入详解及示例代码
2016/08/17 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
2016/09/19 Javascript
深入理解JavaScript中的预解析
2017/01/04 Javascript
Bootstrap3 模态框使用实例
2017/02/22 Javascript
JavaScript实现简单生成随机颜色的方法
2017/09/21 Javascript
JS实现的找零张数最小问题示例
2017/11/28 Javascript
three.js 入门案例详解
2018/01/23 Javascript
浅析vue 函数配置项watch及函数 $watch 源码分享
2018/11/22 Javascript
Vue的H5页面唤起支付宝支付功能
2019/04/18 Javascript
使用python实现接口的方法
2017/07/07 Python
Python清空文件并替换内容的实例
2018/10/22 Python
python中用logging实现日志滚动和过期日志删除功能
2019/08/20 Python
浅谈pycharm使用及设置方法
2019/09/09 Python
python 串行执行和并行执行实例
2020/04/30 Python
Django:使用filter的pk进行多值查询操作
2020/07/15 Python
Python直接赋值及深浅拷贝原理详解
2020/09/05 Python
Python unittest生成测试报告过程解析
2020/09/08 Python
全球最大的服务市场:Fiverr
2017/01/03 全球购物
阿迪达斯荷兰官方网站:adidas荷兰
2018/03/16 全球购物
自荐书模板
2013/12/19 职场文书
大学毕业后的十年规划
2014/01/07 职场文书
财务情况说明书范文
2014/05/06 职场文书
医德考评自我评价
2014/09/14 职场文书
车辆安全隐患排查制度
2015/08/05 职场文书
生日寿星公答谢词
2015/09/29 职场文书
退休劳动合同怎么写?
2019/10/25 职场文书
Win11查看设备管理器
2022/04/19 数码科技