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
我用php+mysql写的留言本
Oct 09 PHP
缓存技术详谈―php
Dec 14 PHP
php allow_url_include的应用和解释
Apr 22 PHP
深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念
Jun 06 PHP
php ci框架中加载css和js文件失败的解决方法
Mar 03 PHP
PHP Smarty模版简单使用方法
Mar 30 PHP
php批量修改表结构实例
May 24 PHP
yii框架redis结合php实现秒杀效果(实例代码)
Oct 26 PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
May 12 PHP
PHP 二维array转换json的实例讲解
Aug 21 PHP
thinkphp5.1框架模板布局与模板继承用法分析
Jul 19 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
PHPMyadmin 配置文件详解(配置)
2009/12/03 PHP
QueryPath PHP 中的jQuery
2010/04/11 PHP
解析Ubuntu下crontab命令的用法
2013/06/24 PHP
php+ajax 实现输入读取数据库显示匹配信息
2015/10/08 PHP
PHP读取XML格式文件的方法总结
2017/02/27 PHP
javascript object array方法使用详解
2012/12/03 Javascript
JS delegate与live浅析
2013/12/21 Javascript
jQuery使用drag效果实现自由拖拽div
2015/06/11 Javascript
使用jquery实现鼠标滑过弹出更多相关信息层附源码下载
2015/11/23 Javascript
jquery+ajax实现注册实时验证实例详解
2015/12/08 Javascript
基于canvas实现的绚丽圆圈效果完整实例
2016/01/26 Javascript
JavaScript动态添加css样式和script标签
2016/07/19 Javascript
JS中位置与大小的获取方法
2016/11/22 Javascript
JS获取鼠标位置距浏览器窗口距离的方法示例
2017/04/11 Javascript
JavaScript 截取字符串代码实例
2019/09/05 Javascript
JavaScript实现沿五角星形线摆动的小圆实例详解
2020/07/28 Javascript
js闭包的9个使用场景
2020/12/29 Javascript
[01:02:38]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第二场 1月10日
2021/03/11 DOTA
Python时间戳与时间字符串互相转换实例代码
2013/11/28 Python
python查看zip包中文件及大小的方法
2015/07/09 Python
python实现画一颗树和一片森林
2018/06/25 Python
python使用__slots__让你的代码更加节省内存
2018/09/05 Python
python实现K近邻回归,采用等权重和不等权重的方法
2019/01/23 Python
python实现对图片进行旋转,放缩,裁剪的功能
2019/08/07 Python
Python中的相关分析correlation analysis的实现
2019/08/29 Python
python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例
2020/02/28 Python
Python requests模块session代码实例
2020/04/14 Python
python实现扫雷小游戏
2020/04/24 Python
解决python 虚拟环境删除包无法加载的问题
2020/07/13 Python
JBL澳大利亚官方商店:扬声器、耳机和音响系统
2018/05/24 全球购物
建筑学推荐信
2013/11/03 职场文书
高中生毕业自我鉴定范文
2013/12/22 职场文书
预备党员入党思想汇报
2014/01/04 职场文书
2015秋季运动会通讯稿
2015/07/18 职场文书
2015年社区重阳节活动总结
2015/07/30 职场文书
Python可视化神器pyecharts绘制地理图表
2022/07/07 Python