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中使用XML
Oct 09 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
Jun 17 PHP
php htmlspecialchars()与shtmlspecialchars()函数的深入分析
Jun 05 PHP
Session服务器配置指南与使用经验的深入解析
Jun 17 PHP
PHP将两个关联数组合并函数提高函数效率
Mar 18 PHP
兼容PHP和Java的des加密解密代码分享
Jun 26 PHP
访问编码后的中文URL返回404错误的解决方法
Aug 20 PHP
linux中cd命令使用详解
Jan 08 PHP
深入理解php printf() 输出格式化的字符串
May 23 PHP
使用WAMP搭建PHP本地开发环境
May 10 PHP
Yii框架操作cookie与session的方法实例详解
Sep 04 PHP
laravel Model 执行事务的实现
Oct 10 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实现验证码功能
2006/10/09 PHP
php自定义函数之递归删除文件及目录
2010/08/08 PHP
CodeIgniter框架过滤HTML危险代码
2014/06/12 PHP
详解PHP中foreach的用法和实例
2016/10/25 PHP
定义select的边框颜色
2008/04/28 Javascript
ASP.NET jQuery 实例4(复制TextBox的文本到本地剪贴板上)
2012/01/13 Javascript
js的Prototype属性解释及常用方法
2014/05/08 Javascript
javascript版的in_array函数(判断数组中是否存在特定值)
2014/05/09 Javascript
jQuery实现MSN中文网滑动Tab菜单效果代码
2015/09/09 Javascript
js与jQuery实现checkbox复选框全选/全不选的方法
2016/01/05 Javascript
防止Node.js中错误导致进程阻塞的办法
2016/08/11 Javascript
Vue组件之自定义事件的功能图解
2018/02/01 Javascript
解决vue中修改export default中脚本报一大堆错的问题
2018/08/27 Javascript
vue中axios请求的封装实例代码
2019/03/23 Javascript
通过图带你深入了解vue的响应式原理
2019/06/21 Javascript
vue组件中节流函数的失效的原因和解决方法
2020/12/02 Vue.js
python学习笔记:字典的使用示例详解
2014/06/13 Python
在Python中用split()方法分割字符串的使用介绍
2015/05/20 Python
基于hashlib模块--加密(详解)
2017/06/21 Python
Python实现的选择排序算法示例
2017/11/29 Python
手把手教你如何安装Pycharm(详细图文教程)
2018/11/28 Python
Python3 关于pycharm自动导入包快捷设置的方法
2019/01/16 Python
python3.6下Numpy库下载与安装图文教程
2019/04/02 Python
python3调用windows dos命令的例子
2019/08/14 Python
Python Tkinter图形工具使用方法及实例解析
2020/06/15 Python
新西兰最大的在线设计师眼镜店:SmartBuyGlasses新西兰
2017/10/20 全球购物
Linux面试题LINUX系统类
2014/11/19 面试题
财务助理岗位职责
2013/11/10 职场文书
商场中秋节广播稿
2014/01/17 职场文书
带刀到教室的检讨书
2014/10/04 职场文书
2015暑期爱心支教策划书
2015/07/14 职场文书
初中生物教学反思
2016/02/20 职场文书
Python虚拟环境virtualenv是如何使用的
2021/06/20 Python
Vue监视数据的原理详解
2022/02/24 Vue.js
详解Python中的for循环
2022/04/30 Python
MYSQL事务的隔离级别与MVCC
2022/05/25 MySQL