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设计模式之命令模式的应用详解
May 21 PHP
php 注册时输入信息验证器的实现详解
Jul 05 PHP
深入解析fsockopen与pfsockopen的区别
Jul 05 PHP
FireFox浏览器使用Javascript上传大文件
Oct 30 PHP
phpstrom使用xdebug配置方法
Dec 17 PHP
关于php支持分块与断点续传文件下载功能代码
May 09 PHP
php调用shell的方法
Nov 05 PHP
PHP图形操作之Jpgraph学习笔记
Dec 25 PHP
CodeIgniter针对数据库的连接、配置及使用方法
Mar 03 PHP
php并发加锁示例
Oct 17 PHP
PHP 无限级分类
May 04 PHP
php实现数字补零的方法总结
Sep 12 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循环获取GET和POST值的代码
2008/04/09 PHP
PHP中防止SQL注入攻击和XSS攻击的两个简单方法
2010/04/15 PHP
php ftp文件上传函数(基础版)
2010/06/03 PHP
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
2014/06/22 PHP
PHP使用GIFEncoder类处理gif图片实例
2014/07/01 PHP
从零开始学YII2框架(六)高级应用程序模板
2014/08/20 PHP
PHP的关于变量和日期处理的一些面试题目整理
2015/08/10 PHP
PHP实现清除wordpress里恶意代码
2015/10/21 PHP
php 数组元素快速去重
2017/05/05 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
thinkphp5修改view到根目录实例方法
2019/07/02 PHP
仿微博字符限制效果实现代码
2012/04/20 Javascript
IE与FireFox的JavaScript兼容问题解决办法
2013/12/31 Javascript
Javascript中this绑定的3种方法与比较
2016/10/13 Javascript
Vue中import from的来源及省略后缀与加载文件夹问题
2020/02/09 Javascript
[04:11]DOTA2上海特级锦标赛主赛事首日TOP10
2016/03/03 DOTA
在服务器端实现无间断部署Python应用的教程
2015/04/16 Python
Python实现遍历数据库并获取key的值
2015/05/17 Python
Python合并两个字典的常用方法与效率比较
2015/06/17 Python
python 根据时间来生成唯一的字符串方法
2019/01/14 Python
Python3.5面向对象程序设计之类的继承和多态详解
2019/04/24 Python
python socket通信编程实现文件上传代码实例
2019/12/14 Python
详解pycharm配置python解释器的问题
2020/10/15 Python
python温度转换华氏温度实现代码
2020/12/06 Python
使用phonegap克隆和删除联系人的实现方法
2017/03/31 HTML / CSS
英国领先的游戏零售商:GAME
2019/09/24 全球购物
Java程序员面试题
2016/09/27 面试题
经典的班主任推荐信
2013/10/28 职场文书
生物技术专业毕业生求职信范文
2013/12/14 职场文书
医务人员自我评价
2014/01/26 职场文书
淘宝活动策划方案
2014/02/06 职场文书
改革共识倡议书
2014/08/29 职场文书
捐助倡议书
2015/01/19 职场文书
委托函范文
2015/01/29 职场文书
Python 处理表格进行成绩排序的操作代码
2021/07/26 Python
MySql重置root密码 --skip-grant-tables
2022/04/11 MySQL