PHP也能干大事 随机函数


Posted in PHP onApril 14, 2015

写在前面

PHP也能干大事是我总结的PHP语法特性及相关函数类库的经典用法,并不一定是真正能实现四两拨千斤的功效,但是掌握这些方法,可以在你的工作和学习上有一些帮助,希望大家能集思广益,将《PHP也能干大事》丰富得更精彩!转载请注明出处(3mc2.com)

二、前言

PHP是常见的脚本语言,主要是因为其简单易学,上手快,几乎50%以上的Web程序都有PHP的身影(不完全统计)。PHP为开发这提供了丰富的函数和API接口,这使得我们能够非常方便地使用其强大的内置函数及扩展,本文是《PHP也能干大事》系列的第二篇,主要总结PHP在随机数生成器方面的知识。

三、PHP随机函数

PHP随机函数主要有rand、mt_rand、array_rand,还有随机“排列”(打乱顺序)的函数shuffle、str_shuffle,能够产生唯一ID的uniqid。

1、rand产生随机数:

<?php
$base = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$count = strlen($base);
$random = '';
for ($i=0; $i < 16; $i++) { 
 $random.=$base[rand(0,$count-1)];
}
echo $random;
?>

rand()函数是使用libc 的随机数发生器生成随机数的,一般较慢,且有不确定因素,建议使用mt_rand函数替代。

getrandmax()函数可以返回rand函数能够产生的最大的随机数(我的系统为32767),所以在设置rand函数第二个参数时不要超高getrandmax的返回值。

2、mt_rand产生随机数:

<?php
$base = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$count = strlen($base);
$random = '';
for ($i=0; $i < 16; $i++) { 
 $random.=$base[mt_rand(0,$count-1)];
}
echo $random;
?>

很多老的 libc 的随机数发生器具有一些不确定和未知的特性而且很慢。PHP 的 rand() 函数默认使用 libc 随机数发生器。mt_rand() 函数是非正式用来替换它的。该函数用了 » Mersenne Twister 中已知的特性作为随机数发生器,它可以产生随机数值的平均速度比 libc 提供的 rand() 快四倍。强烈建议在开发过程中使用mt_rand函数取代rand。

如果没有提供可选参数 min 和 max,mt_rand() 返回 0 到 mt_getrandmax() 之间的伪随机数。例如想要 3到 20(包括 3 和 20)之间的随机数,用 mt_rand(3, 20)。

3、array_rand函数

<?php
$base = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9');
 
$random = '';
for ($i=0; $i < 16; $i++) { 
 $random.=$base[array_rand($base)];
}
echo $random;
?>

array_rand返回数组中随机的键值,有点类似mt_rand()函数,其余的没什么特殊的地方,灵活运用而已。

4、shuffle函数

<?php
$base = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9');
if(shuffle($base)){
 print_r($base);
}
?>

shuffle函数是打乱一个数组的序列,有点随机的意思,这里就放在随机函数里了。返回值为bool值,相当于直接引用了原变量。

5、str_shuffle函数

<?php
$base = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
echo str_shuffle($base);
?>

这里str_shuffle的功能和shuffle的功能是类似的,唯一不同的是返回值,str_shuffle的原字符串是不变的。

6、uniqid函数

<?php
echo uniqid();
//54f806528172f
?>

uniqid能够产生唯一的字符串,这个应用的范围可以相当广泛

四、总结
随机函数几乎是每种语言最基本的功能,PHP对于随机函数的支持也不例外,这里介绍了rand、mt_rand、array_rand、shuffle、str_shuffle、uniqid函数的基本用法,更多可以结合实际应用灵活运用。

PHP 相关文章推荐
一个程序下载的管理程序(三)
Oct 09 PHP
解析百度搜索结果link?url=参数分析 (全)
Oct 09 PHP
PHP对MongoDB[NoSQL]数据库的操作
Mar 01 PHP
简单的cookie计数器实现源码
Jun 07 PHP
php中怎么搜索相关联数组键值及获取之
Oct 17 PHP
php curl模拟post请求小实例
Nov 13 PHP
php在apache环境下实现gzip配置方法
Apr 02 PHP
PHP输出一个等腰三角形的方法
May 12 PHP
PHP使用缓存即时输出内容(output buffering)的方法
Aug 03 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
May 05 PHP
利用PHPStorm如何开发Laravel应用详解
Aug 30 PHP
关于PHP数组迭代器的使用方法实例
Nov 17 PHP
PHP数组操作――获取数组最后一个值的方法
Apr 14 #PHP
微信公众平台之快递查询功能用法实例
Apr 14 #PHP
php生成rss类用法实例
Apr 14 #PHP
php修改上传图片尺寸的方法
Apr 14 #PHP
php动态添加url查询参数的方法
Apr 14 #PHP
php保存任意网络图片到服务器的方法
Apr 14 #PHP
php实现改变图片直接打开为下载的方法
Apr 14 #PHP
You might like
雄兵连:第三季确定会出,不过时间未定,鹤熙是第三季的主角!
2020/03/13 国漫
PHP IPV6正则表达式验证代码
2010/02/16 PHP
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
2014/06/12 PHP
CI框架(CodeIgniter)实现的导入、导出数据操作示例
2018/05/24 PHP
laravel5.6实现数值转换
2019/10/23 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
js jquery验证银行卡号信息正则学习
2013/01/21 Javascript
javascript基础之查找元素的详细介绍(访问节点)
2013/07/05 Javascript
jquery性能优化高级技巧
2015/08/24 Javascript
基于javascript编写简单日历
2016/05/02 Javascript
jquery+css3问卷答题卡翻页动画效果示例
2016/10/26 Javascript
AngularJS入门教程之与服务器(Ajax)交互操作示例【附完整demo源码下载】
2016/11/02 Javascript
使用ionic播放轮询广告的实现方法(必看)
2017/04/24 Javascript
vue数据双向绑定的注意点
2017/06/23 Javascript
解决React Native端口号修改的方法
2017/07/28 Javascript
layui数据表格重载实现往后台传参
2019/11/15 Javascript
vue-cli3使用mock数据的方法分析
2020/03/16 Javascript
JavaScript隐式类型转换代码实例
2020/05/29 Javascript
python交互式图形编程实例(三)
2017/11/17 Python
selenium python 实现基本自动化测试的示例代码
2019/02/25 Python
浅谈python常用程序算法
2019/03/22 Python
用pycharm开发django项目示例代码
2019/06/13 Python
python如何获取列表中每个元素的下标位置
2019/07/01 Python
详解python uiautomator2 watcher的使用方法
2019/09/09 Python
Python使用itcaht库实现微信自动收发消息功能
2020/07/13 Python
Python绘图之柱形图绘制详解
2020/07/28 Python
美国Rue La La闪购网站:奢侈品、中高档品牌限时折扣
2016/10/19 全球购物
校班主任推荐信范文
2013/12/03 职场文书
县优秀教师事迹材料
2014/01/31 职场文书
竞选班干部演讲稿
2014/04/24 职场文书
校园演讲稿汇总
2014/05/21 职场文书
三问三解心得体会
2014/09/05 职场文书
捐助感谢信
2015/01/22 职场文书
Java基础之详解HashSet的使用方法
2021/06/30 Java/Android
python库sklearn常用操作
2021/08/23 Python
js前端面试常见浏览器缓存强缓存及协商缓存实例
2022/06/21 Javascript