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高级OOP技术演示
Aug 27 PHP
php 无法载入mysql扩展
Mar 12 PHP
如何用C语言编写PHP扩展的详解
Jun 13 PHP
php定时计划任务与fsockopen持续进程实例
May 23 PHP
简单理解PHP的面向对象编程方式
May 17 PHP
使用php完成常见的文件上传功能(推荐)
Jan 13 PHP
超强多功能php绿色集成环境详解
Jan 25 PHP
php实现的XML操作(读取)封装类完整实例
Feb 23 PHP
PHP编程实现csv文件导入mysql数据库的方法
Apr 29 PHP
php类自动装载、链式操作、魔术方法实现代码
Jul 23 PHP
Django中的cookie与session操作实例代码
Aug 17 PHP
Laravel框架实现抢红包功能示例
Oct 31 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
使用apache模块rewrite_module (转)
2007/02/14 PHP
JS中 用户登录系统的解决办法
2013/04/15 Javascript
JS打开层/关闭层/移动层动画效果的实例代码
2013/05/11 Javascript
MultiSelect左右选择控件的设计与实现介绍
2013/06/08 Javascript
gridpanel动态加载数据的实例代码
2013/07/18 Javascript
Jquery实现侧边栏跟随滚动条固定(兼容IE6)
2014/04/02 Javascript
Jquery 点击按钮自动高亮实现原理及代码
2014/04/25 Javascript
学习JavaScript鼠标响应事件
2015/12/25 Javascript
javascript特殊日历控件分享
2016/03/07 Javascript
js实现(全选)多选按钮的方法【附实例】
2016/03/30 Javascript
js 定位到某个锚点的方法
2016/11/19 Javascript
EasyUI Combobox设置默认值 获取text的方法
2016/11/28 Javascript
原生JS获取元素集合的子元素宽度实例
2016/12/14 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
2017/01/12 Javascript
JS倒计时实例_天时分秒
2017/08/22 Javascript
Vue精简版风格概述
2018/01/30 Javascript
微信小程序 setData 对 data数据影响问题
2019/04/18 Javascript
js验证身份证号码记录的方法
2019/04/26 Javascript
Vue替代marquee标签超出宽度文字横向滚动效果
2019/12/09 Javascript
[04:31]2016国际邀请赛中国区预选赛妖精采访
2016/06/27 DOTA
python 自动提交和抓取网页
2009/07/13 Python
极简的Python入门指引
2015/04/01 Python
浅谈python中对于json写入txt文件的编码问题
2018/06/07 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
2019/04/01 Python
解决python有时候import不了当前的包问题
2019/08/28 Python
python 实现从高分辨图像上抠取图像块
2020/01/02 Python
python实现文字版扫雷
2020/04/24 Python
基于Python把网站域名解析成ip地址
2020/05/25 Python
python实现数学模型(插值、拟合和微分方程)
2020/11/13 Python
python 实现波浪滤镜特效
2020/12/02 Python
英国最大的电脑零售连锁店集团:PC World
2016/10/10 全球购物
商务英语本科生的自我评价分享
2013/11/15 职场文书
中国好声音广告词
2014/03/18 职场文书
超市仓管员岗位职责
2014/04/07 职场文书
电子商务助理求职自荐信
2014/04/10 职场文书
于丹讲座视频观后感
2015/06/15 职场文书