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 md5下16位和32位的实现代码
Apr 09 PHP
php处理斐波那契数列非递归方法
Feb 04 PHP
PHP笔记之:基于面向对象设计的详解
May 14 PHP
PHP5中GD库生成图形验证码(有汉字)
Jul 28 PHP
php实现aes加密类分享
Feb 16 PHP
Dwz与thinkphp整合下的数据导出到Excel实例
Dec 04 PHP
php实现无限级分类
Dec 24 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
May 13 PHP
PHP多维数组遍历方法(2种实现方法)
Dec 10 PHP
PHP简单实现生成txt文件到指定目录的方法
Apr 25 PHP
Yii CGridView用法实例详解
Jul 12 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
Oct 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
搜索引擎技术核心揭密
2006/10/09 PHP
PHP+redis实现添加处理投票的方法
2015/11/14 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
SAE实时日志接口SDK用法示例
2016/10/09 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
详谈PHP中的密码安全性Password Hashing
2017/02/04 PHP
php-fpm中max_children的配置
2019/03/15 PHP
jQuery Selector选择器小结
2010/05/06 Javascript
Jquery下attr和removeAttr的使用方法
2010/12/28 Javascript
javascript题目,重写函数让其无限相加
2012/02/15 Javascript
解析Javascript中难以理解的11个问题
2013/12/09 Javascript
jquery默认校验规则整理
2014/03/24 Javascript
javascript中拼接HTML字符串的最快、最好的方法
2014/06/07 Javascript
js和jquery中循环的退出和继续下一个循环
2014/09/03 Javascript
jQuery实现百叶窗焦点图动画效果代码分享(附源码下载)
2016/03/14 Javascript
JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】
2017/01/22 Javascript
angularJS 发起$http.post和$http.get请求的实现方法
2017/05/18 Javascript
小程序ios音频播放没声音问题的解决
2018/07/11 Javascript
JavaScript私有变量实例详解
2019/01/24 Javascript
[00:43]拉比克至宝魔导师密钥展示
2018/12/20 DOTA
python在windows下实现ping操作并接收返回信息的方法
2015/03/20 Python
Python实现简单的文本相似度分析操作详解
2018/06/16 Python
Python Grid使用和布局详解
2018/06/30 Python
Python实现简单查找最长子串功能示例
2019/02/26 Python
python requests更换代理适用于IP频率限制的方法
2019/08/21 Python
利用python实现逐步回归
2020/02/24 Python
Python如何给你的程序做性能测试
2020/07/29 Python
Nike挪威官网:Nike.com (NO)
2018/11/26 全球购物
英国珠宝网站Argento: PANDORA、Olivia Burton和Nomination等
2020/05/08 全球购物
上海天奕面试题笔试题
2015/04/19 面试题
房地产促销活动方案
2014/03/01 职场文书
服装设计专业毕业生求职信
2014/04/09 职场文书
金融专业求职信
2014/08/05 职场文书
领导班子三严三实对照检查材料
2014/09/25 职场文书
个人向公司借款协议书
2016/03/19 职场文书
36个正则表达式(开发效率提高80%)
2021/11/17 Javascript