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下统计用户在线时间的一种尝试
Aug 26 PHP
PHP中数组的三种排序方法分享
May 07 PHP
ajax php传递和接收变量实现思路及代码
Dec 19 PHP
PHP Directory 函数的详解
Mar 07 PHP
php多次include后导致全局变量global失效的解决方法
Feb 28 PHP
PHP实现查询手机归属地的方法详解
Apr 28 PHP
yii2.0整合阿里云oss删除单个文件的方法
Sep 19 PHP
php读取本地json文件的实例
Mar 07 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
May 11 PHP
php微信公众号开发之秒杀
Oct 20 PHP
Laravel框架Auth用户认证操作实例分析
Sep 29 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
从网上搜到的phpwind 0day的代码
2006/12/07 PHP
php定义数组和使用示例(php数组的定义方法)
2014/03/29 PHP
php eval函数一句话木马代码
2015/05/21 PHP
PHP中余数、取余的妙用
2015/06/29 PHP
PHP实现的简单异常处理类示例
2017/05/04 PHP
jquery+json实现的搜索加分页效果
2010/03/31 Javascript
JS简单实现文件上传实例代码(无需插件)
2013/11/15 Javascript
ExtJs中gridpanel分组后组名排序实例代码
2013/12/02 Javascript
php析构函数的具体用法小结
2014/03/11 Javascript
用js判断是否为360浏览器的实现代码
2015/01/15 Javascript
js鼠标悬浮出现遮罩层的方法
2015/01/28 Javascript
jQuery实现列表的全选功能
2015/03/18 Javascript
使用jQuery,Angular实现登录界面验证码详解
2017/04/27 jQuery
Bootstrap图片轮播效果详解
2017/10/17 Javascript
Nodejs模块载入运行原理
2018/02/23 NodeJs
深入理解Node内建模块和对象
2019/03/12 Javascript
vue中touch和click共存的解决方式
2020/07/28 Javascript
Python去掉字符串中空格的方法
2014/03/11 Python
跟老齐学Python之深入变量和引用对象
2014/09/24 Python
用Python代码来绘制彭罗斯点阵的教程
2015/04/03 Python
简单介绍Python中的filter和lambda函数的使用
2015/04/07 Python
python读取excel表格生成erlang数据
2017/08/26 Python
python+opencv实现的简单人脸识别代码示例
2017/11/14 Python
python利用小波分析进行特征提取的实例
2019/01/09 Python
python爬取王者荣耀全皮肤的简单实现代码
2020/01/31 Python
Python3 字典dictionary入门基础附实例
2020/02/10 Python
详解python如何引用包package
2020/06/07 Python
浅谈Python描述数据结构之KMP篇
2020/09/06 Python
HTML5+CSS3实例 :canvas 模拟实现电子彩票刮刮乐代码
2016/12/30 HTML / CSS
Lands’ End官网:经典的美国生活方式品牌
2016/08/14 全球购物
ShellScript面试题一则-ShellScript编程
2014/06/24 面试题
客户经理岗位职责
2013/12/08 职场文书
感恩教师节演讲稿
2014/09/03 职场文书
硕士毕业答辩开场白
2015/05/27 职场文书
python用字节处理文件实例讲解
2021/04/13 Python
css中有哪些方式可以隐藏页面元素及区别
2022/06/16 HTML / CSS