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 相关文章推荐
PHP实现Socket服务器的代码
Apr 03 PHP
PHP 采集程序 常用函数
Dec 18 PHP
php empty函数判断mysql表单是否为空
Apr 12 PHP
php Static关键字实用方法
Jun 04 PHP
php 删除一个数组中的某个值.兼容多维数组!
Feb 18 PHP
php下Memcached入门实例解析
Jan 05 PHP
php找出指定范围内回文数且平方根也是回文数的方法
Mar 23 PHP
[原创]PHPCMS遭遇会员投稿审核无效的解决方法
Jan 11 PHP
PHP实现的简单对称加密与解密方法实例小结
Aug 28 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
Feb 27 PHP
php下的原生ajax请求用法实例分析
Feb 28 PHP
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
Apr 01 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
制作美丽的拉花
2021/03/03 冲泡冲煮
php 数学运算验证码实现代码
2009/10/11 PHP
浅谈PHP中静态方法和非静态方法的相互调用
2016/10/04 PHP
php实现博客,论坛图片防盗链的方法
2016/10/15 PHP
摘自启点的main.js
2008/04/20 Javascript
javascript检测浏览器的缩放状态实现代码
2014/09/28 Javascript
javascript实现详细时间提醒信息效果的方法
2015/03/11 Javascript
JavaScript中String.prototype用法实例
2015/05/20 Javascript
JavaScript简单下拉菜单实例代码
2015/09/07 Javascript
node.js中 stream使用教程
2016/08/28 Javascript
让DIV的滚动条自动滚动到最底部的3种方法(推荐)
2016/09/24 Javascript
angularjs 表单密码验证自定义指令实现代码
2016/10/27 Javascript
详解js树形控件—zTree使用总结
2016/12/28 Javascript
微信小程序实现action-sheet弹出底部菜单功能【附源码下载】
2017/12/09 Javascript
nodejs搭建本地服务器并访问文件操作示例
2019/05/11 NodeJs
Python模块学习 filecmp 文件比较
2012/08/27 Python
python实现发送邮件及附件功能
2021/03/02 Python
一篇文章读懂Python赋值与拷贝
2018/04/19 Python
python 用lambda函数替换for循环的方法
2018/06/09 Python
Python编程深度学习绘图库之matplotlib
2018/12/28 Python
Python netmiko模块的使用
2020/02/14 Python
python中lower函数实现方法及用法讲解
2020/12/23 Python
利用python+request通过接口实现人员通行记录上传功能
2021/01/13 Python
CSS3 实现童年的纸飞机
2019/05/05 HTML / CSS
浅谈pc和移动端的响应式的使用
2019/01/03 HTML / CSS
StubHub墨西哥:购买和出售您的门票
2016/09/17 全球购物
英国手机壳购买网站:Case Hut
2019/04/11 全球购物
化学专业毕业生自荐信
2013/11/15 职场文书
纠风工作实施方案
2014/03/15 职场文书
兽医医药专业求职信
2014/07/27 职场文书
2015年小学一年级班主任工作总结
2015/05/21 职场文书
如何把新闻人物写得立体、鲜活?
2019/08/14 职场文书
导游词之海南-南湾猴岛
2019/10/12 职场文书
React-vscode使用jsx语法的问题及解决方法
2021/06/21 Javascript
SONY AN-LP1 短波有源天线放大器图
2022/04/05 无线电
HTML页面点击按钮关闭页面的多种方式
2022/12/24 HTML / CSS