PHP也能干大事 随机函数

 更新时间:2015年04月14日 21:24:06   投稿:mdxy-dxy  
这篇文章主要介绍了PHP也能干大事 随机函数,需要的朋友可以参考下

写在前面

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错误、异常处理机制(补充)

    异常处理: 意外,是在程序运行过程中发生的意料这外的事,使用异常改变脚本正常流程
    2012-05-05
  • WordPress中邮件的一些修改和自定义技巧

    WordPress中邮件的一些修改和自定义技巧

    这篇文章主要介绍了WordPress中邮件的一些修改和自定义技巧,包括更改邮件为HTML形式以及定义SMTP邮件的发件人的方法,需要的朋友可以参考下
    2015-12-12
  • PHP使用Reli分析性能,生成PHP性能火焰图

    PHP使用Reli分析性能,生成PHP性能火焰图

    Reli 是一个用PHP编写的采样分析器(或VM状态检查器),它可以从进程外部读取有关运行PHP脚本的信息,它是一个独立的CLI工具,因此目标程序不需要任何修改,检测和可视化PHP脚本中的瓶颈,它不仅提供函数级的分析,而且还提供行级或操作码级的解析
    2024-01-01
  • java解析json方法总结

    java解析json方法总结

    在本篇文章中小编给大家总结了关于java解析json方法总结以及相关知识点,需要的朋友们学习下。
    2019-05-05
  • PHP中round()函数对浮点数进行四舍五入的方法

    PHP中round()函数对浮点数进行四舍五入的方法

    这篇文章主要介绍了PHP中round()函数对浮点数进行四舍五入的方法,通过详尽的实例对round()函数的各种常见用法进行了归纳整理,是非常实用的技巧,需要的朋友可以参考下
    2014-11-11
  • 让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享

    让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享

    ThinkPHP支持通过PATHINFO和URL rewrite的方式来提供友好的URL,只需要在配置文件中设置 'URL_MODEL' => 2 即可。在Apache下只需要开启mod_rewrite模块就可以正常访问了,但是Nginx中默认是不支持PATHINFO的,所以我们需要修改nginx.conf文件。
    2011-08-08
  • php 团购折扣计算公式

    php 团购折扣计算公式

    php 团购折扣计算公式,因为最近需要调用天天团购程序的数据,代码比较不好找,所以直接自己写个代码读取mysql的数据。
    2011-11-11
  • ThinkPHP基于think-queue的队列插件实现消息推送

    ThinkPHP基于think-queue的队列插件实现消息推送

    think-queue是ThinkPHP官方提供的一个消息队列服务,是专门支持队列服务的扩展包。think-queue消息队列适用于大并发或返回结果时间比较长且需要批量操作的第三方接口,可用于短信发送、邮件发送、APP推送。
    2022-12-12
  • PHP5中使用mysqli的prepare操作数据库的介绍

    PHP5中使用mysqli的prepare操作数据库的介绍

    今天小编就为大家分享一篇关于PHP5中使用mysqli的prepare操作数据库的介绍,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • php 文件状态缓存带来的问题

    php 文件状态缓存带来的问题

    当使用以下函数时,会因为文件状态缓存,导致结果错误
    2008-12-12

最新评论