PHP内置函数生成随机数实例


Posted in PHP onJanuary 18, 2019

1. rand函数

rand() 函数可以不加任何参数,就可以生成随机整数。如果要设置随机数范围,可以在函数中设置 min 和 max 的值。如果需要生成随机数的种子,使用 srand 函数配置。

echo rand();           // 生成 0~RAND_MAX 之间的随机数,Windows 系统下 RAND_MAX 的值为 32767,RAND_MAX 可以用函数 getrandmax() 获得
echo rand(1000000, 9999999);   // 生成 1000000~9999999 之间的随机数
$seed = time();          // 使用时间作为种子源
srand($seed);           // 播下随机数发生器种子
echo rand();           // 根据种子生成 0~32768 之间的随机数。如果 $seed 值固定,则生成的随机数也不变
echo rand(1000000, 9999999);   // 根据种子生成 1000000~9999999 之间的随机数。如果 $seed 值固定,则生成的随机数也不变

2. mt_rand函数

mt_rand() 是使用 Mersenne Twister 算法返回随机整数,与 rand() 函数的主要区别是:mt_rand()产生随机数值的平均速度比 libc 提供的 rand() 快四倍,并且播种函数使用mt_srand(),而不是srand()。虽然有这点区别,但是它们的使用方法还是相似的,如下:

echo mt_rand();          // 生成 0~RAND_MAX 之间的随机数,Windows 系统下 RAND_MAX 的值为 2147483647(与rand()中的 RAND_MAX 不同),RAND_MAX 可以用函数 mt_getrandmax() 获得
echo mt_rand(1000000, 9999999);  // 生成 1000000~9999999 之间的随机数,不受系统 RAND_MAX 影响
$seed = time();          // 使用时间作为种子源
mt_srand($seed);         // 播下随机数发生器种子
echo rand();           // 根据种子生成 0~RAND_MAX 之间的随机数,如果 $seed 值固定,则生成的随机数也不变
echo rand(1000000, 9999999);   // 根据种子生成 1000000~9999999 之间的随机数,如果 $seed 值固定,则生成的随机数也不变

说明:rand() 和 mt_rand() 两个函数生成的随机数都是整数,不会包含英文字母。

3. uniqid函数

uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID。默认生成ID的长度为13位或者23位,由英文字母和数字组成。uniqid() 函数有两个参数,格式如下:

uniqid(prefix,more_entropy)

其中,

prefix:生成ID的前缀

more_entropy:是否添加额外的熵

如下的程序,

echo uniqid();          // 生成13位字符串,如:55f540e273e93
echo uniqid('one.');       // 生成前缀为one.加13位随机字符的字符串,如:one.55f540e273e93
echo uniqid('two.', true);    // 生成前缀为two.加23位随机字符的字符串(加了熵),如:two.55f540e273e932.77804707,比上面的多了 10 位,即多了:2.77804707

说明:由于基于系统时间,通过该函数生成的 ID 不是最佳的。如需生成绝对唯一的 ID,请使用 md5() 函数。

PHP 相关文章推荐
PHP 执行系统外部命令 system() exec() passthru()
Aug 11 PHP
php 注释规范
Mar 29 PHP
分享PHP header函数使用教程
Sep 05 PHP
PHP三元运算的2种写法代码实例
May 12 PHP
php中使用sftp教程
Mar 30 PHP
php生成动态验证码gif图片
Oct 19 PHP
php多线程实现方法及用法实例详解
Oct 26 PHP
PHP生成制作验证码的简单实例
Jun 12 PHP
php微信公众平台开发(一) 配置接口
Dec 06 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
Jul 03 PHP
详解PHP字符串替换str_replace()函数四种用法
Oct 13 PHP
php ZipArchive实现多文件打包下载实例
Oct 31 PHP
Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
Jan 17 #PHP
Laravel框架基于ajax实现二级联动功能示例
Jan 17 #PHP
Laravel框架基于ajax和layer.js实现无刷新删除功能示例
Jan 17 #PHP
strpos() 函数判断字符串中是否包含某字符串的方法
Jan 16 #PHP
Laravel框架实现的批量删除功能示例
Jan 16 #PHP
Laravel框架实现的rbac权限管理操作示例
Jan 16 #PHP
PHP基于cookie实现统计在线人数功能示例
Jan 16 #PHP
You might like
php生成文件
2007/01/15 PHP
php学习笔记(三)操作符与控制结构
2011/08/06 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
2014/11/19 PHP
php中Ctype函数用法详解
2014/12/09 PHP
PHP使用内置dir类实现目录遍历删除
2015/03/31 PHP
jquery lazyload延迟加载技术的实现原理分析
2011/01/24 Javascript
文本框水印提示效果的简单实现代码
2014/02/22 Javascript
node.js中的fs.fstat方法使用说明
2014/12/15 Javascript
js实现进度条的方法
2015/02/13 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
2015/05/16 Javascript
每天一篇javascript学习小结(属性定义方法)
2015/11/19 Javascript
JavaScript获取客户端IP的方法(新方法)
2016/03/11 Javascript
JS使用onerror捕获异常示例
2016/08/03 Javascript
jQuery实现的tab标签切换效果示例
2016/09/05 Javascript
浅谈js内置对象Math的属性和方法(推荐)
2016/09/19 Javascript
AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
2017/01/19 Javascript
vue 动态改变静态图片以及请求网络图片的实现方法
2018/02/07 Javascript
JS如何生成随机验证码
2020/03/02 Javascript
js 实现碰撞检测的示例
2020/10/28 Javascript
[01:39]2014DOTA2国际邀请赛 Newbee经理CU专访队伍火力全开
2014/07/15 DOTA
单利模式及python实现方式详解
2018/03/20 Python
python库lxml在linux和WIN系统下的安装
2018/06/24 Python
Python+Pandas 获取数据库并加入DataFrame的实例
2018/07/25 Python
Python中的取模运算方法
2018/11/10 Python
python爬取基于m3u8协议的ts文件并合并
2019/04/26 Python
Python代码执行时间测量模块timeit用法解析
2020/07/01 Python
python实现每天自动签到领积分的示例代码
2020/08/18 Python
jupyter notebook快速入门及使用详解
2020/11/13 Python
加拿大当代时尚服饰、配饰和鞋类专业零售商和制造商:LE CHÂTEAU
2017/10/06 全球购物
linux面试题参考答案(5)
2014/09/01 面试题
借款协议书
2014/04/12 职场文书
军训拉歌口号
2014/06/13 职场文书
地震捐款倡议书
2014/08/29 职场文书
2014年大学班长工作总结
2014/11/14 职场文书
童年读书笔记
2015/06/26 职场文书
高通2023 年将发布高性能PC处理器
2022/04/29 数码科技