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 相关文章推荐
第七节 类的静态成员 [7]
Oct 09 PHP
PHP中数组的三种排序方法分享
May 07 PHP
请离开include_once和require_once
Jul 18 PHP
PHP执行SQL文件并将SQL文件导入到数据库
Sep 17 PHP
编写PHP脚本使WordPress的主题支持Widget侧边栏
Dec 14 PHP
PHP简单字符串过滤方法示例
Sep 04 PHP
php利用云片网实现短信验证码功能的示例代码
Nov 18 PHP
PHP的RSA加密解密方法以及开发接口使用
Feb 11 PHP
自写的利用PDO对mysql数据库增删改查操作类
Feb 19 PHP
php精度计算的问题解析
Jun 21 PHP
laravel在中间件内生成参数并且传递到控制器中的2种姿势
Oct 15 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
Nov 23 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中理解print EOT分界符和echo EOT的用法区别小结
2010/02/21 PHP
20个PHP常用类库小结
2011/09/11 PHP
zf框架的zend_cache缓存使用方法(zend框架)
2014/03/14 PHP
PHP利用MySQL保存session的实现思路及示例代码
2014/09/09 PHP
php操作mongodb封装类与用法实例
2018/09/01 PHP
用apply让javascript函数仅执行一次的代码
2010/06/27 Javascript
jQuery 快速结束当前正在执行的动画
2013/11/20 Javascript
浅谈JavaScript实现面向对象中的类
2014/12/09 Javascript
javascript实现简单的on事件绑定
2016/08/23 Javascript
JavaScript简单下拉菜单特效
2016/09/13 Javascript
利用Jquery实现几款漂亮实用的时间轴(附示例代码)
2017/02/15 Javascript
Angular4表单验证代码详解
2017/09/03 Javascript
解决vue v-for 遍历循环时key值报错的问题
2018/09/06 Javascript
Angularjs实现数组随机排序的方法
2018/10/02 Javascript
Element 默认勾选表格 toggleRowSelection的实现
2019/09/04 Javascript
Js实现复选框的全选、全不选反选功能代码实例
2020/02/28 Javascript
js+css3实现炫酷时钟
2020/08/18 Javascript
[06:53]DOTA2每周TOP10 精彩击杀集锦vol.3
2014/06/25 DOTA
Python操作列表的常用方法分享
2014/02/13 Python
Python中Class类用法实例分析
2015/11/12 Python
Python松散正则表达式用法分析
2016/04/29 Python
浅析Python数据处理
2018/05/02 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
2018/11/15 Python
python3.5 cv2 获取视频特定帧生成jpg图片
2019/08/28 Python
Python如何输出百分比
2020/07/31 Python
Python Django路径配置实现过程解析
2020/11/05 Python
大学生实习自我鉴定
2013/12/11 职场文书
怎样填写就业意向
2014/04/02 职场文书
幼儿园中班上学期评语
2014/04/18 职场文书
派出所正风肃纪剖析材料
2014/10/10 职场文书
工程催款通知书
2015/04/17 职场文书
时尚女魔头观后感
2015/06/04 职场文书
导游词之新疆尼雅遗址
2019/10/16 职场文书
2019年世界儿童日宣传标语
2019/11/22 职场文书
CSS3实现列表无限滚动/轮播效果
2021/06/23 HTML / CSS
Mysql分库分表之后主键处理的几种方法
2022/02/15 MySQL