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 相关文章推荐
Banner程序
Oct 09 PHP
PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
Nov 02 PHP
php中防止SQL注入的最佳解决方法
Apr 25 PHP
使用ob系列函数实现PHP网站页面静态化
Aug 13 PHP
php获取系统变量方法小结
May 29 PHP
PHP中把错误日志保存在系统日志中(Windows系统)
Jun 23 PHP
使用PHP生成二维码的方法汇总
Jul 22 PHP
php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
Nov 30 PHP
Windows2003下php5.4安装配置教程(IIS)
Jun 30 PHP
php 判断过去离现在几年的函数(实例代码)
Nov 15 PHP
PHP创建自己的Composer包方法
Apr 09 PHP
thinkPHP5框架实现基于ajax的分页功能示例
Jun 12 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
IIS6的PHP最佳配置方法
2007/03/19 PHP
PHP无限分类代码,支持数组格式化、直接输出菜单两种方式
2011/05/18 PHP
浏览器预览PHP文件时顶部出现空白影响布局分析原因及解决办法
2013/01/11 PHP
PHP开发框架kohana中处理ajax请求的例子
2014/07/14 PHP
php实现用手机关闭计算机(电脑)的方法
2015/04/22 PHP
php中删除、清空session的方式总结
2015/10/09 PHP
PHP创建单例后台进程的方法示例
2017/05/23 PHP
php redis setnx分布式锁简单原理解析
2020/10/23 PHP
javascript简单性能问题及学习笔记
2014/02/04 Javascript
jQuery 1.9使用$.support替代$.browser的使用方法
2014/05/27 Javascript
仿JQuery输写高效JSLite代码的一些技巧
2015/01/13 Javascript
JQuery中的事件及动画用法实例
2015/01/26 Javascript
JavaScript 常见安全漏洞和自动化检测技术
2015/08/21 Javascript
在Ubuntu系统上安装Node.JS的教程
2015/10/15 Javascript
简单总结JavaScript中的String字符串类型
2016/05/26 Javascript
详解基于javascript实现的苹果系统底部菜单
2016/12/02 Javascript
react-redux中connect()方法详细解析
2017/05/27 Javascript
Vue实现typeahead组件功能(非常靠谱)
2017/08/26 Javascript
vue中锚点的三种方法
2018/07/06 Javascript
使用vue点击li,获取当前点击li父辈元素的属性值方法
2018/09/12 Javascript
Vue.js更改调试地址端口号的实例
2018/09/19 Javascript
vue-cli2.0转3.0之项目搭建的详细步骤
2018/12/11 Javascript
使用vue制作滑动标签
2019/09/21 Javascript
Javascript Web Worker使用过程解析
2020/03/16 Javascript
Node 模块原理与用法详解
2020/05/13 Javascript
Python中logging实例讲解
2019/01/17 Python
利用pyinstaller打包exe文件的基本教程
2019/05/02 Python
Python单元测试与测试用例简析
2019/11/09 Python
numpy中三维数组中加入元素后的位置详解
2019/11/28 Python
Python3爬虫关于识别检验滑动验证码的实例
2020/07/30 Python
全球领先的美容用品专卖店:Beauty Plus Salon
2018/09/04 全球购物
King Apparel官网:英国街头服饰品牌
2019/09/05 全球购物
教师应聘个人求职信
2013/12/10 职场文书
军人离婚协议书样本
2014/10/21 职场文书
小学安全工作总结2015
2015/05/18 职场文书
无婚姻登记记录证明
2015/06/18 职场文书