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 相关文章推荐
一个程序下载的管理程序(四)
Oct 09 PHP
一个简单的PHP入门源程序
Oct 09 PHP
php array_slice函数的使用以及参数详解
Aug 30 PHP
php 解决旧系统 查出所有数据分页的类
Aug 27 PHP
通过php快速统计某个数据库中每张表的数据量
Sep 04 PHP
PHP防盗链代码实例
Aug 27 PHP
再Docker中架设完整的WordPress站点全攻略
Jul 29 PHP
8个必备的PHP功能开发
Oct 02 PHP
PHP设计模式之简单投诉页面实例
Feb 24 PHP
php使用文本统计访问量的方法
May 12 PHP
PHP 接入支付宝即时到账功能
Sep 18 PHP
PHP策略模式定义与用法示例
Jul 27 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
DIY实用性框形天线
2021/03/02 无线电
php 日期时间处理函数小结
2009/12/18 PHP
关于PHP的curl开启问题探讨
2014/04/08 PHP
详解PHP中websocket的使用方法
2016/09/15 PHP
JSQL  一个 web DB 的封装
2010/05/05 Javascript
电子商务网站上的常用的js放大镜效果
2011/12/08 Javascript
js css后面所带参数含义介绍
2013/08/18 Javascript
java与javascript之间json格式数据互转介绍
2013/10/29 Javascript
jquery对table中各数据的增加、保存、删除操作示例
2014/05/14 Javascript
简单方法判断JavaScript对象为null或者属性为空
2014/09/26 Javascript
深入理解JavaScript编程中的同步与异步机制
2015/06/24 Javascript
浅谈angularJS 作用域
2015/07/05 Javascript
Jquery ajax基础教程
2015/11/20 Javascript
jquery判断input值不为空的方法
2016/06/05 Javascript
ES6(ECMAScript 6)新特性之模板字符串用法分析
2017/04/01 Javascript
深究AngularJS——ng-checked(回写:带真实案例代码)
2017/06/13 Javascript
微信小程序自定义导航隐藏和显示功能
2017/06/13 Javascript
axios发送post请求,提交图片类型表单数据方法
2018/03/16 Javascript
理理Vue细节(推荐)
2019/04/16 Javascript
vue+ts下对axios的封装实现
2020/02/18 Javascript
JavaScript组合设计模式--改进引入案例分析
2020/05/23 Javascript
springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)
2020/10/15 Javascript
[10:42]Team Liquid Vs Newbee
2018/06/07 DOTA
Python函数式编程指南(四):生成器详解
2015/06/24 Python
Python中的集合类型知识讲解
2015/08/19 Python
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
2018/04/22 Python
详解Numpy中的广播原则/机制
2018/09/20 Python
python:接口间数据传递与调用方法
2018/12/17 Python
入党自我鉴定范文
2013/10/04 职场文书
二手书店创业计划书
2014/01/16 职场文书
运动会稿件100字
2014/02/21 职场文书
任命书范本大全
2014/06/06 职场文书
三月学雷锋活动总结
2014/06/26 职场文书
2014年检验科工作总结
2014/11/22 职场文书
2015年计生协会工作总结
2015/04/24 职场文书
一文帮你理解PReact10.5.13源码
2021/04/03 Javascript