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 相关文章推荐
dedecms中显示数字验证码的修改方法
Mar 21 PHP
MySQL修改密码方法总结
Mar 25 PHP
php+AJAX传送中文会导致乱码的问题的解决方法
Sep 08 PHP
PHP下一个非常全面获取图象信息的函数
Nov 20 PHP
php中配置文件操作 如config.php文件的读取修改等操作
Jul 07 PHP
php查看请求头信息获取远程图片大小的方法分享
Dec 25 PHP
PHP利用MySQL保存session的实现思路及示例代码
Sep 09 PHP
php第一次无法获取cookie问题处理
Dec 15 PHP
PHP中文竖排转换实现方法
Oct 23 PHP
Symfony2实现从数据库获取数据的方法小结
Mar 18 PHP
PHP实现简单登录界面
Oct 23 PHP
利用PHP计算有多少小于当前数字的数字方法示例
Aug 26 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
php+mysql实现用户注册登陆的方法
2015/01/03 PHP
如何离线执行php任务
2017/02/21 PHP
Aster vs KG BO3 第一场2.18
2021/03/10 DOTA
JS如何判断移动端访问设备并解析对应CSS
2013/11/27 Javascript
Node.js中对通用模块的封装方法
2014/06/06 Javascript
简单谈谈javascript Date类型
2015/09/06 Javascript
总结JavaScript中布尔操作符||与&amp;&amp;的使用技巧
2015/11/17 Javascript
JavaScript 深层克隆对象详解及实例
2016/11/03 Javascript
AngularJs表单验证实例代码解析
2016/11/29 Javascript
微信小程序 常用工具类详解及实例
2017/02/15 Javascript
vue.js中v-on:textInput无法执行事件问题的解决过程
2017/07/12 Javascript
基于Vue组件化的日期联动选择器功能的实现代码
2018/11/30 Javascript
Easyui 关闭jquery-easui tab标签页前触发事件的解决方法
2019/04/28 jQuery
js 实现 list转换成tree的方法示例(数组到树)
2019/08/18 Javascript
APIStar:一个专为Python3设计的API框架
2018/09/26 Python
浅谈Pandas Series 和 Numpy array中的相同点
2019/06/28 Python
python对绑定事件的鼠标、按键的判断实例
2019/07/17 Python
python 并发下载器实现方法示例
2019/11/22 Python
python使用正则表达式(Regular Expression)方法超详细
2019/12/30 Python
Python多线程获取返回值代码实例
2020/02/17 Python
Selenium常见异常解析及解决方案示范
2020/04/10 Python
python算的上脚本语言吗
2020/06/22 Python
澳大利亚第一旅行车和房车配件店:Caravan RV Camping
2020/12/26 全球购物
自荐信不宜过于夸大
2013/11/06 职场文书
给导游的表扬信
2014/01/10 职场文书
霸王洗发水广告词
2014/03/14 职场文书
爱国演讲稿500字
2014/05/04 职场文书
三八妇女节活动总结
2014/05/04 职场文书
团日活动总结书格式
2014/05/08 职场文书
租房协议书范文
2014/08/20 职场文书
教师对照四风自我剖析材料
2014/09/30 职场文书
2014年实验室工作总结
2014/12/03 职场文书
学生自我评语
2015/01/04 职场文书
营业员岗位职责范本
2015/04/14 职场文书
win11无法登录onedrive错误代码0x8004def7怎么办 ?
2022/04/05 数码科技
在容器中使用nginx搭建上传下载服务器
2022/05/11 Servers