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.ini中的php-5.2.0配置指令详解
Mar 27 PHP
不要轻信 PHP_SELF的安全问题
Sep 05 PHP
PHP数组内存耗用太多问题的解决方法
Apr 05 PHP
PHP中读写文件实现代码
Oct 20 PHP
php实现rc4加密算法代码
Apr 25 PHP
基于PHP+Ajax实现表单验证的详解
Jun 25 PHP
PHP中使用FFMPEG获取视频缩略图和视频总时长实例
May 04 PHP
php判断数组元素中是否存在某个字符串的方法
Jun 14 PHP
ThinkPHP里用U方法调用js文件实例
Jun 18 PHP
整理php防注入和XSS攻击通用过滤
Sep 13 PHP
关于PHP转换超过2038年日期出错的问题解决
Jun 28 PHP
Yii2.0多文件上传实例说明
Jul 24 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
header中Content-Disposition的作用与使用方法
2012/06/13 PHP
php post大量数据时发现数据丢失问题解决方法
2015/06/20 PHP
腾讯CMEM的PHP扩展编译安装方法
2015/09/25 PHP
线路分流自动跳转代码;希望对大家有用!
2006/12/02 Javascript
JS模块与命名空间的介绍
2013/03/22 Javascript
解析offsetHeight,clientHeight,scrollHeight之间的区别
2013/11/20 Javascript
js触发select onchange事件的小技巧
2014/08/05 Javascript
js中confirm实现执行操作前弹出确认框的方法
2014/11/01 Javascript
JS实现图片产生波纹一样flash效果的方法
2015/02/27 Javascript
Jquery实现textarea根据文本内容自适应高度
2015/04/03 Javascript
js实现网页抽奖实例
2015/08/05 Javascript
iframe跨域通信封装详解
2015/08/11 Javascript
jQuery实现二级下拉菜单效果
2016/01/05 Javascript
jQuery xml字符串的解析、读取及查找方法
2016/03/01 Javascript
极力推荐10个短小实用的JavaScript代码段
2016/08/03 Javascript
BootStrap与validator 使用笔记(JAVA SpringMVC实现)
2016/09/21 Javascript
jQuery tagsinput在h5邮件客户端中应用详解
2016/09/26 Javascript
React 组件转 Vue 组件的命令写法
2018/02/28 Javascript
简单的vuex 的使用案例笔记
2018/04/13 Javascript
mpvue小程序仿qq左滑置顶删除组件
2018/08/03 Javascript
vant组件中 dialog的确认按钮的回调事件操作
2020/11/04 Javascript
[45:15]Optic vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
Python collections模块实例讲解
2014/04/07 Python
采用Psyco实现python执行速度提高到与编译语言一样的水平
2014/10/11 Python
python获取代码运行时间的实例代码
2018/06/11 Python
Python网络爬虫信息提取mooc代码实例
2020/03/06 Python
html5使用window.postMessage进行跨域实现数据交互的一次实战
2021/02/24 HTML / CSS
亿企通软件测试面试题
2012/04/10 面试题
三好学生个人先进事迹材料
2014/05/17 职场文书
小组口号大全
2014/06/09 职场文书
人事行政经理岗位职责
2014/06/18 职场文书
优秀三好学生事迹材料
2014/08/31 职场文书
工作表扬信范文
2015/01/17 职场文书
私人贷款担保书该怎么写呢?
2019/07/02 职场文书
pnpm对npm及yarn降维打击详解
2022/08/05 Javascript
使用CSS实现按钮边缘跑马灯动画
2023/05/07 HTML / CSS