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 金额数字转换成英文
May 06 PHP
php学习之流程控制实现代码
Jun 09 PHP
查找mysql字段中固定字符串并替换的几个方法
Sep 23 PHP
关于二级目录拖拽排序的实现(源码示例下载)
Apr 26 PHP
php 批量替换程序的具体实现代码
Oct 04 PHP
PHP使用Session遇到的一个Permission denied Notice解决办法
Jul 30 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
Sep 29 PHP
PHP的switch判断语句的“高级”用法详解
Oct 01 PHP
php自定义函数实现JS的escape的方法示例
Jul 07 PHP
PHP编程计算文件或数组中单词出现频率的方法
May 22 PHP
yii2.0整合阿里云oss的示例代码
Sep 19 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
Nov 23 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数据库代码
2009/03/10 PHP
php set_time_limit()函数的使用详解
2013/06/05 PHP
php中并发读写文件冲突的解决方案
2013/10/25 PHP
从PHP的源码中深入了解stdClass类
2014/04/18 PHP
PHP函数实现分页含文本分页和数字分页
2014/10/23 PHP
php+html5实现无刷新图片上传教程
2016/01/22 PHP
PHP请求Socket接口测试实例
2016/08/12 PHP
php获取POST数据的三种方法实例详解
2016/12/20 PHP
PHP中echo与print区别点整理
2021/03/09 PHP
JavaScript入门教程(6) Window窗口对象
2009/01/31 Javascript
jquery焦点图片切换(数字标注/手动/自动播放/横向滚动)
2013/01/24 Javascript
jQuery Form 页面表单提交的小例子
2013/11/15 Javascript
Javascript动态引用CSS文件的2种方法介绍
2014/06/06 Javascript
深入理解JavaScript中的浮点数
2016/05/18 Javascript
JS模仿腾讯图片站的图片翻页按钮效果完整实例
2016/06/21 Javascript
微信小程序 教程之wxapp视图容器 swiper
2016/10/19 Javascript
COM组件中调用JavaScript函数详解及实例
2017/02/23 Javascript
JS常用的几种数组遍历方式以及性能分析对比实例详解
2018/04/11 Javascript
json解析大全 双引号、键值对不在一起的情况
2019/12/06 Javascript
[03:33]TI9战队采访 - Infamous
2019/08/20 DOTA
Python实现冒泡,插入,选择排序简单实例
2014/08/18 Python
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
2015/03/19 Python
Python实现LRU算法的2种方法
2015/06/24 Python
Python中的数学运算操作符使用进阶
2016/06/20 Python
python 将列表中的字符串连接成一个长路径的方法
2018/10/23 Python
Python类和对象的定义与实际应用案例分析
2018/12/27 Python
Python图像处理库PIL的ImageDraw模块介绍详解
2020/02/26 Python
Python获取对象属性的几种方式小结
2020/03/12 Python
墨西哥网上购物:Linio墨西哥
2016/10/20 全球购物
加拿大最大的相机店:Henry’s
2017/05/17 全球购物
Camper鞋西班牙官方网上商店:西班牙马略卡岛的鞋类品牌
2019/03/14 全球购物
法国在线药房:1001Pharmacies
2021/03/07 全球购物
英语自我评价范文
2014/01/24 职场文书
幼儿园校园小喇叭广播稿
2014/10/17 职场文书
三好学生评选事迹材料(2016精选版)
2016/02/25 职场文书
漫画《催眠麦克风-Dawn Of Divisions》第二卷PV公开
2022/04/05 日漫