PHP随机函数rand()、mt_rand()、srand()、mt_srand() 的区别
1、生成随机数发生器种子的函数
srand()、 mt_srand()
区别:mt_srand() 比 srand() 更好的生成随机数发生器种子
定义:
void srand([int $seed])
void mt_srand([int $seed])
用 seed 来给随机数发生器播种。 没有设定 seed 参数时,会被设为随时数。
参数:
seed 可选的种子值
返回值: 没有
#example
echo microtime();
=> 0.22750900 1534295333
function make_seed()
{
list($usec, $sec) = explode(' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}
mt_srand(make_seed());
$randval = mt_rand();
提示:自 PHP 4.2.0 起,不再需要用 srand() 或 mt_srand() 给随机数发生器播种 ,因为现在是由系统自动完成的。
2、随机数生成函数 rand() 、mt_rand()
定义:
int rand ( void )
int rand ( int $min , int $max )
int mt_rand ( void )
int mt_rand ( int $min , int $max )
很多老的 libc 的随机数发生器具有一些不确定和未知的特性而且很慢。PHP 的 rand() 函数默认使用 libc 随机数发生器。
mt_rand() 函数用了 » Mersenne Twister 中已知的特性作为随机数发生器,它可以产生随机数值的平均速度比 libc 提供的 rand() 快四倍。
如果没有提供可选参数 min 和 max,mt_rand() 返回 0 到 mt_getrandmax() 之间的伪随机数。
getrandmax() 最大值为:32767
mt_getrandmax() 最大值为:2147483647
提示:自PHP 4.2 开始 随机数发生器有系统自动进行播种。
PHP 常用数学函数
- abs — 绝对值
- acos — 反余弦
- acosh — 反双曲余弦
- asin — 反正弦
- asinh — 反双曲正弦
- atan2 — 两个参数的反正切
- atan — 反正切
- atanh — 反双曲正切
- base_convert — 在任意进制之间转换数字
- bindec — 二进制转换为十进制
- ceil — 进一法取整
- cos — 余弦
- cosh — 双曲余弦
- decbin — 十进制转换为二进制
- dechex — 十进制转换为十六进制
- decoct — 十进制转换为八进制
- deg2rad — 将角度转换为弧度
- exp — 计算 e 的指数
- expm1 — 返回 exp(number) - 1,甚至当 number 的值接近零也能计算出准确结果
- floor — 舍去法取整
- fmod — 返回除法的浮点数余数
- getrandmax — 显示随机数最大的可能值
- hexdec — 十六进制转换为十进制
- hypot — 计算一直角三角形的斜边长度
- intdiv — 对除法结果取整
- is_finite — 判断是否为有限值
- is_infinite — 判断是否为无限值
- is_nan — 判断是否为合法数值
- lcg_value — 组合线性同余发生器
- log10 — 以 10 为底的对数
- log1p — 返回 log(1 + number),甚至当 number 的值接近零也能计算出准确结果
- log — 自然对数
- max — 找出最大值
- min — 找出最小值
- mt_getrandmax — 显示随机数的最大可能值
- mt_rand — 生成更好的随机数
- mt_srand — 播下一个更好的随机数发生器种子
- octdec — 八进制转换为十进制
- pi — 得到圆周率值
- pow — 指数表达式
- rad2deg — 将弧度数转换为相应的角度数
- rand — 产生一个随机整数
- round — 对浮点数进行四舍五入
- sin — 正弦
- sinh — 双曲正弦
- sqrt — 平方根
- srand — 播下随机数发生器种子
- tan — 正切
- tanh — 双曲正切
PHP 预定义常量

PHP随机函数rand()、mt_rand()、srand()、mt_srand() 的区别的更多相关文章
- 随机函数rand()和srand()
C++中随机函数rand()和srand()的用法 一.rand() 函数名: rand 功 能: 随机数发生器 用 法: int rand(void); 所在头文件: ...
- awk之随机函数rand()和srand()
awk之随机函数rand()和srand() 分类: LINUX 文件: abcdefg ...... 现在想要随机抽取5列组成下面的内容,允许重复: cffab ...... awk -F '' ' ...
- 随机函数rand()与srand()
一.int rand(void); 函数所在的头文件是stdlib.h: 其内部实现线性同除法,不是真正的随机数.通常rand()%x是指在x范围内取模,返回值0-x; 系统默认随机种子是1: 二.v ...
- 认识随机函数rand()和srand(unsigned int )
rand函数 int rand( void ); 函数名: rand 功 能: 随机数发生器 用 法: int rand(void); 所在头文件: stdlib.h 函数说明 : ...
- awk之随机函数rand()和srand() (转)
转自:http://blog.chinaunix.net/uid-10540984-id-2942041.html 文件: 1234567 abcdefg ...... 现在想要随机抽取5列组成下 ...
- 【转】随机函数的rand、srand用法
from:深海的小鱼儿 地址:http://www.cnblogs.com/xmphoenix/archive/2011/04/07/2008622.html 随机函数的rand.srand用法 一& ...
- rand和srand的用法
首先我们要对rand&srand有个总体的看法:srand初始化随机种子,rand产生随机数,下面将详细说明. rand(产生随机数)表头文件: #include<stdlib.h> ...
- 随笔:关于 FastAdmin ueditor 插件 中的 rand mt_rand mt_getrandmax 问题
随笔:关于 FastAdmin ueditor 插件 中的 rand mt_rand mt_getrandmax 问题 问题来源 一位小伙伴在使用 Ueditor 插件时出错,因为用的是 php7.1 ...
- rand()和srand()
C++中rand() 函数的用法 1.rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数. 2.如果你要产生0~99这100个整数中的一个随机整数, ...
- rand()与srand()
1.不用srand()的话 两次运行程序产生的随机数序列相同 2.用srand() 两次运行程序产生的随机数则不同 示例程序: #include<iostream> #include< ...
随机推荐
- Git——新手入门与上传项目到远程仓库GitHub(转)
Git概述 什么是Git? 刚开始对这个东西也感到挺迷茫,并且问了好多已经学习android一段时间的同学也是一头雾水,直到了解并使用之后,才体会到Git的好处以及重要意义. Git:是目前世界上最先 ...
- 写出js内存泄漏的问题?
回答一: (1)IE7/8 DOM对象或者Active对象循环引用导致内存泄漏 a.多个对象循环引用 b.循环的DOM泄漏 (2)基础的DOM泄漏 当原有的DOM被移除时,子节点引用没有被移除则无法回 ...
- oracle 批量更新merge语句
merge into (SELECT * FROM QUERY_DB1.test_MPOS ) T1 using (SELECT FLAG FLAG1,IN_MNO FROM QUERY_DB1.t ...
- Node.js实战(六)之Npm
NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种: 允许用户从NPM服务器下载别人编写的第三方包到本地使用. 允许用户从NPM服务器下载并 ...
- Node.js实战(一)之概述
, 一.Node.js介绍 Node.js是一个Javascript运行环境(runtime environment),发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进 ...
- 理解传说中的roll、yaw、pitch
三维中 Yaw, pitch and roll 的区分(图片) yaw 航偏 pi ...
- STlinkSWD模式连线方式
若使用SWD模式,则只需要连接4根线,7,9,20,1即SWDIO,SWDCLK,GND,VCC.VCC为3.3V
- css3动画功能介绍
一:过渡动画---Transitions 含义:在css3中,Transitions功能通过将元素的某个属性从一个属性值在指定的时间内平滑过渡到另一个属性值来实现动画功能. Transitions属性 ...
- JAVA框架 Mybaits 动态sql
动态sql 一:if标签使用: 我们在查询的时候,有时候由于查询的条件的不确定性,导致where的后面的条件的不同,这时候就需要我们进行where后面的条件进行拼接. Mapper配置文件: < ...
- 浅拷贝与深拷贝的实现方式、区别;deepcopy如果你来设计,如何实现(一)
浅拷贝与深拷贝的实现方式.区别:deepcopy如果你来设计,如何实现: copy浅拷贝:没有拷贝子对象,所以原始数据改变,子对象改变 deepcopy深拷贝:包含对象里面的子对象的拷贝,所以原始对象 ...