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程序
Oct 09 PHP
php下使用以下代码连接并测试
Apr 09 PHP
使用eAccelerator加密PHP程序
Oct 03 PHP
PHP 图片文件上传实现代码
Dec 29 PHP
PHP+MYSQL会员系统的登陆即权限判断实现代码
Sep 23 PHP
对象失去焦点时自己动提交数据的实现代码
Nov 06 PHP
Codeigniter整合Tank Auth权限类库详解
Jun 12 PHP
destoon常用的安全设置概述
Jun 21 PHP
简述php环境搭建与配置
Dec 05 PHP
Yii2使用$this->context获取当前的Module、Controller(控制器)、Action等
Mar 29 PHP
浅谈PHP array_search 和 in_array 函数效率问题
Oct 15 PHP
php的无刷新操作实现方法分析
Feb 28 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生成UTF8文件的方法
2010/05/15 PHP
php set_time_limit(0) 设置程序执行时间的函数
2010/05/26 PHP
PHPMailer发送HTML内容、带附件的邮件实例
2014/07/01 PHP
PHP之预定义接口详解
2015/07/29 PHP
中高级PHP程序员应该掌握哪些技术?
2016/09/23 PHP
简单实用的反馈表单无刷新提交带验证
2013/11/15 Javascript
JS 仿腾讯发表微博的效果代码
2013/12/25 Javascript
jQuery插件jquery-barcode实现条码打印的方法
2015/11/25 Javascript
在javascript中创建对象的各种模式解析
2016/05/16 Javascript
JS Attribute属性操作详解
2016/05/19 Javascript
原生JS轮播图插件
2017/02/09 Javascript
JavaScript基础之this详解
2017/06/04 Javascript
微信小程序学习笔记之文件上传、下载操作图文详解
2019/03/29 Javascript
vue祖孙组件之间的数据传递案例
2020/12/07 Vue.js
JavaScript 获取滚动条位置并将页面滑动到锚点
2021/02/08 Javascript
WebStorm无法正确识别Vue3组合式API的解决方案
2021/02/18 Vue.js
Python实现字符串匹配算法代码示例
2017/12/05 Python
Python实现的计算马氏距离算法示例
2018/04/03 Python
Python实现的HMacMD5加密算法示例
2018/04/03 Python
如何更优雅地写python代码
2019/07/02 Python
在pycharm中显示python画的图方法
2019/08/31 Python
python opencv将表格图片按照表格框线分割和识别
2019/10/30 Python
python列表删除和多重循环退出原理详解
2020/03/26 Python
python 等差数列末项计算方式
2020/05/03 Python
python excel和yaml文件的读取封装
2021/01/12 Python
CSS3 选择器 伪类选择器介绍
2012/01/21 HTML / CSS
详解基于 Canvas 手撸一个六边形能力图
2019/09/02 HTML / CSS
HTML5之SVG 2D入门5—颜色的表示及定义方式
2013/01/30 HTML / CSS
毕业自荐信
2013/12/16 职场文书
大学生社会实践自我鉴定
2014/03/24 职场文书
工程质量承诺书
2014/03/27 职场文书
伦敦奥运会口号
2014/06/13 职场文书
期中考试后的感想
2015/08/07 职场文书
幼儿园家长心得体会
2016/01/21 职场文书
2016年读书月活动总结范文
2016/04/06 职场文书
解决golang结构体tag编译错误的问题
2021/05/02 Golang