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 相关文章推荐
Zend framework处理一个http请求的流程分析
Feb 08 PHP
PHP人民币金额数字转中文大写的函数代码
Feb 27 PHP
yii框架配置默认controller和action示例
Apr 30 PHP
PHP中多维数组的foreach遍历示例
Jun 13 PHP
PHP在线打包下载功能示例
Oct 15 PHP
Docker配置PHP开发环境教程
Dec 21 PHP
PHP使用DOM和simplexml读取xml文档的方法示例
Feb 08 PHP
php curl上传、下载、https登陆实现代码
Jul 23 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
Mar 15 PHP
PHPTree――php快速生成无限级分类
Mar 30 PHP
PHP中cookie知识点学习
May 06 PHP
PHP加MySQL消息队列深入理解
Feb 27 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 破解防盗链图片函数
2008/12/09 PHP
由php的call_user_func传reference引发的思考
2010/07/23 PHP
PHP中Header使用的HTTP协议及常用方法小结
2014/11/04 PHP
PHP关联数组实现根据元素值删除元素的方法
2015/06/26 PHP
深入讲解PHP的对象注入(Object Injection)
2017/03/01 PHP
PHP设计模式之简单工厂和工厂模式实例分析
2019/03/25 PHP
PHP的new static和new self的区别与使用
2019/11/27 PHP
php生成随机数/生成随机字符串的方法小结【5种方法】
2020/05/27 PHP
JS应用之禁止抓屏、复制、打印
2008/02/21 Javascript
jQuery与ExtJS之选择实例分析
2010/08/19 Javascript
JS嵌套函数调用上下文的问题解决
2014/03/26 Javascript
JavaScript实现表格点击排序的方法
2015/05/11 Javascript
BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)
2016/11/30 Javascript
Jquery中attr与prop的区别详解
2017/05/27 jQuery
Express框架之connect-flash详解
2017/05/31 Javascript
详解node-ccap模块生成captcha验证码
2017/07/01 Javascript
解决axios会发送两次请求,有个OPTIONS请求的问题
2018/10/25 Javascript
JavaScript快速调试的两个技巧
2020/11/04 Javascript
[53:43]VP vs NewBee Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
python搭建简易服务器分析与实现
2012/12/15 Python
python从入门到精通(DAY 1)
2015/12/20 Python
Python下载指定页面上图片的方法
2016/05/12 Python
Python缩进和冒号详解
2016/06/01 Python
python下os模块强大的重命名方法renames详解
2017/03/07 Python
python 3.6 +pyMysql 操作mysql数据库(实例讲解)
2017/12/20 Python
Python实现连接两个无规则列表后删除重复元素并升序排序的方法
2018/02/05 Python
python pandas中DataFrame类型数据操作函数的方法
2018/04/08 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
2019/08/06 Python
python 画3维轨迹图并进行比较的实例
2019/12/06 Python
马来西亚在线药房:RoyalePharma
2019/12/01 全球购物
2014年最新版离婚协议书范本
2014/11/25 职场文书
2014年实验室工作总结
2014/12/03 职场文书
社区党员干部承诺书
2015/05/04 职场文书
《跨越海峡的生命桥》教学反思
2016/02/18 职场文书
CSS作用域(样式分割)的使用汇总
2021/11/07 HTML / CSS
python可视化大屏库big_screen示例详解
2021/11/23 Python