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 magic_quotes_gpc的一点认识与分析
Aug 18 PHP
让的PHP代码飞起来的40条小技巧(提升php效率)
Apr 12 PHP
PHP+Mysql+jQuery实现发布微博程序 jQuery篇
Oct 08 PHP
Uncaught exception com_exception with message Failed to create COM object
Jan 11 PHP
php截取字符串之截取utf8或gbk编码的中英文字符串示例
Mar 12 PHP
php中最简单的字符串匹配算法
Dec 16 PHP
CI分页类首页、尾页不显示的解决方法
Mar 28 PHP
学习thinkphp5.0验证类使用方法
Nov 16 PHP
PHP使Laravel为JSON REST API返回自定义错误的问题
Oct 16 PHP
Laravel5.4框架使用socialite实现github登录的方法
Mar 20 PHP
laravel-admin自动生成模块,及相关基础配置方法
Oct 08 PHP
在laravel中使用with实现动态添加where条件
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
在DC的漫画和电影中,蝙蝠侠的宿敌,小丑的真名是什么?
2020/04/09 欧美动漫
SONY ICF-F10中波修复记
2021/03/02 无线电
PHP 翻页 实例代码
2009/08/07 PHP
修改ThinkPHP缓存为Memcache的方法
2014/06/25 PHP
使用apply方法处理数组的三个技巧[译]
2012/09/20 Javascript
jQuery之排序组件的深入解析
2013/06/19 Javascript
jQuery当鼠标悬停时放大图片的效果实例
2013/07/03 Javascript
js 实现日期灵活格式化的小例子
2013/07/14 Javascript
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
2013/12/14 Javascript
js生成缩略图后上传并利用canvas重绘
2014/05/15 Javascript
详解Node.js模块间共享数据库连接的方法
2016/05/24 Javascript
漫谈JS引擎的运行机制 你应该知道什么
2016/06/15 Javascript
jQuery实现简单的网页换肤效果示例
2016/09/18 Javascript
Vue.js组件使用开发实例教程
2016/11/01 Javascript
jquery实现瀑布流效果 jquery下拉加载新数据
2016/12/12 Javascript
JavaScript校验Number(4,1)格式的数字实例代码
2017/03/13 Javascript
解决Vue2.0 watch对象属性变化监听不到的问题
2018/09/11 Javascript
微信小程序自定义导航栏
2018/12/31 Javascript
JavaScript创建对象的四种常用模式实例分析
2019/01/11 Javascript
JavaScript显式数据类型转换详解
2019/03/18 Javascript
JS中数据结构与算法---排序算法(Sort Algorithm)实例详解
2019/06/17 Javascript
javascript+css实现进度条效果
2020/03/25 Javascript
vue动画—通过钩子函数实现半场动画操作
2020/08/09 Javascript
关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version
2020/10/17 Javascript
查看Python安装路径以及安装包路径小技巧
2015/04/28 Python
python杀死一个线程的方法
2015/09/06 Python
Ruby使用eventmachine为HTTP服务器添加文件下载功能
2016/04/20 Python
从局部变量和全局变量开始全面解析Python中变量的作用域
2016/06/16 Python
基于Python+Appium实现京东双十一自动领金币功能
2019/10/31 Python
pip 20.3 新版本发布!即将抛弃 Python 2.x(推荐)
2020/12/16 Python
美国温暖商店:The Warming Store
2018/12/15 全球购物
实习单位接收函
2014/01/11 职场文书
淘宝客服自我总结鉴定
2014/01/25 职场文书
环境卫生工作汇报材料
2014/10/28 职场文书
党支部考察鉴定意见
2015/06/02 职场文书
公司食堂管理制度
2015/08/05 职场文书