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 相关文章推荐
别人整理的服务器变量:$_SERVER
Oct 20 PHP
php将数据库中所有内容生成静态html文档的代码
Apr 12 PHP
php网站来路获取代码(针对搜索引擎)
Jun 08 PHP
一些php项目中比较通用的php自建函数的详解
Jun 06 PHP
深入php socket的讲解与实例分析
Jun 13 PHP
PHP采用get获取url汉字出现乱码的解决方法
Nov 13 PHP
浅谈PHP中foreach/in_array的使用
Nov 02 PHP
PHP和MySql中32位和64位的整形范围是多少
Feb 18 PHP
一个实用的php验证码类
Jul 06 PHP
Ubuntu上安装yaf扩展的方法
Jan 29 PHP
php学习笔记之字符串常见操作总结
Jul 16 PHP
WordPress免插件实现面包屑导航的示例代码
Aug 20 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/06/25 PHP
PHP array_multisort() 函数的深入解析
2013/06/20 PHP
PHP获取文件相对路径的方法
2015/02/26 PHP
Codeigniter实现发送带附件的邮件
2015/03/19 PHP
php页面,mysql数据库转utf-8乱码,utf-8编码问题总结
2015/08/27 PHP
PHP中的print_r 与 var_dump 输出数组
2016/06/13 PHP
Laravel 5.5官方推荐的Nginx配置学习教程
2017/10/06 PHP
JavaScript中继承的一些示例方法与属性参考
2010/08/07 Javascript
Javascript 遍历页面text控件详解
2014/01/06 Javascript
常用jQuery选择器总结
2014/07/11 Javascript
轻松创建nodejs服务器(6):作出响应
2014/12/18 NodeJs
JavaScript基于setTimeout实现计数的方法
2015/05/08 Javascript
JavaScript简单判断复选框是否选中及取出值的方法
2015/08/13 Javascript
Windows 系统下设置Nodejs NPM全局路径
2016/04/26 NodeJs
基于jquery实现图片放大功能
2016/05/07 Javascript
Bootstrap开发实战之响应式轮播图
2016/06/02 Javascript
jQuery序列化表单成对象的简单实现
2016/11/29 Javascript
xmlplus组件设计系列之图标(ICON)(1)
2017/05/05 Javascript
详解在vue-cli中使用路由
2017/09/25 Javascript
echarts学习笔记之箱线图的分析与绘制详解
2017/11/22 Javascript
再谈Angular4 脏值检测(性能优化)
2018/04/23 Javascript
基于 jQuery 实现键盘事件监听控件
2019/04/04 jQuery
JS实现求字符串中出现最多次数的字符和次数示例
2019/07/05 Javascript
详解vue页面首次加载缓慢原因及解决方案
2019/11/06 Javascript
详解vue-router的Import异步加载模块问题的解决方案
2020/05/13 Javascript
Python科学计算之NumPy入门教程
2017/01/15 Python
Python 使用 Pillow 模块给图片添加文字水印的方法
2019/08/30 Python
django修改models重建数据库的操作
2020/03/31 Python
解决python虚拟环境切换无效的问题
2020/04/30 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
2020/06/14 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
2020/07/03 Python
Tiqets荷兰:出售欧洲最美丽的景点和博物馆门票
2018/01/09 全球购物
党的群众路线教育实践活动方案
2014/10/31 职场文书
芙蓉镇观后感
2015/06/10 职场文书
大学生村官入党自传
2015/06/26 职场文书
python中的被动信息搜集
2021/04/29 Python