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 相关文章推荐
桌面中心(三)修改数据库
Oct 09 PHP
使用apache模块rewrite_module (转)
Feb 14 PHP
一篇不错的PHP基础学习笔记
Mar 18 PHP
php xml-rpc远程调用
Dec 19 PHP
php 代码优化的42条建议 推荐
Sep 25 PHP
php写的简易聊天室代码
Jun 04 PHP
PHP多文件上传实例
Jul 09 PHP
Thinkphp+smarty+uploadify实现无刷新上传
Jul 30 PHP
浅谈php fopen下载远程文件的函数
Nov 18 PHP
PHP实现网站访问量计数器
Oct 27 PHP
php服务器的系统详解
Oct 12 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
Dec 20 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 危险函数解释 分析
2009/04/22 PHP
PHP 获取文件路径(灵活应用__FILE__)
2013/02/15 PHP
apache和php之间协同工作的配置经验分享
2013/04/08 PHP
Yii调试SQL的常用方法
2014/07/09 PHP
Laravel中前端js上传图片到七牛云的示例代码
2017/09/04 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
2018/04/20 PHP
Yii2语言国际化的配置教程
2018/08/19 PHP
纯css+js写的一个简单的tab标签页带样式
2014/01/28 Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
2014/03/13 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
2014/10/17 Javascript
nodejs教程之入门
2014/11/21 NodeJs
JavaScript基础知识及常用方法总结
2016/01/10 Javascript
node.js文件上传处理示例
2016/10/27 Javascript
angular4自定义组件详解
2017/09/28 Javascript
vuejs使用递归组件实现树形目录的方法
2017/09/30 Javascript
浅谈Vuex的状态管理(全家桶)
2017/11/04 Javascript
js+html获取系统当前时间
2017/11/10 Javascript
Windows上node.js的多版本管理工具用法实例分析
2019/11/06 Javascript
jQuery使用ajax传递json对象到服务端及contentType的用法示例
2020/03/12 jQuery
python实现博客文章爬虫示例
2014/02/26 Python
python递归函数绘制分形树的方法
2018/06/22 Python
Python Selenium安装及环境配置的实现
2020/03/17 Python
python判断元素是否存在的实例方法
2020/09/24 Python
Python高并发和多线程有什么关系
2020/11/14 Python
菲律宾购物网站:Lazada菲律宾
2018/04/05 全球购物
美国折扣宠物药房:Total Pet Supply
2018/05/27 全球购物
美国购买韩国护肤和美容产品网站:Althea Korea
2020/11/16 全球购物
维德科技C#面试题笔试题
2015/12/09 面试题
优秀毕业生推荐信
2013/11/02 职场文书
小学生清明节演讲稿
2014/09/05 职场文书
个人批评与自我批评范文
2014/10/17 职场文书
2014年电厂工作总结
2014/12/04 职场文书
求职简历自荐信怎么写
2015/03/26 职场文书
python flask框架快速入门
2021/05/14 Python
Sleuth+logback 设置traceid 及自定义信息方式
2021/07/26 Java/Android
一篇文章了解正则表达式的替换技巧
2022/02/24 Javascript