深入PHP获取随机数字和字母的方法详解


Posted in PHP onJune 06, 2013

第一种方法

<?php
$FileID=date("Ymd-His") . '-' . rand(100,999);

//$FileID为   20100903-132121-908   这样的的随机数
?>

第二种方法
<?php
function randomkeys($length) {
    $returnStr='';
    $pattern = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLOMNOPQRSTUVWXYZ';
    for($i = 0; $i < $length; $i ++) {
        $returnStr .= $pattern {mt_rand ( 0, 61 )}; //生成php随机数
    }
    return $returnStr;
}
echo randomkeys(4);
?>

第三种方法
<?php
//seed用户自定义函数以微秒作为种子
function seed()
{
list($msec, $sec) = explode(' ', microtime());
return (float) $sec;
}
//播下随机数发生器种子,用srand函数调用seed函数的返回结果
srand(seed());
//输出产生的随机数,随机数的范围为10-100
echo rand(10,100);
?>

上面这个和下面这个不是没什么不同吗?都是随机输出10-100之间的数,新人学习,可能问的太简单了呵呵
<?php
echo rand(10,100);
?>
mt_rand(10,100);

srand是种子,如果不设的话默认是1
rand一般是利用种子做参数的一种固定的运算
你试一下就知道了,不设种子或者设一个固定的种子,运行rand
然后再关了浏览器再开,再运行rand
你会发现结果一直是一样的
先说rand()函数吧,rand([int min], [int max])   
本函数从min和max之间取一个随机数。若没有指定随机数的最大及最小范围,本函数会自动的从0到RAND_MAX中取一个随机数。
但是如果只用rand()这个函数,随机数的乱度很大,每次在取随机数之前最好使用srand()函数,以配置新的随机数种子。
解释一下下面这个用法(一般都是这样用这两个函数的):
srand((double)microtime()*1000000);
$rand_number= rand();
microtime()返回了两个值:当前毫秒和时间戳,我们要提取随机数,只能从毫秒中取一个随机数,(double)microtime()就只返回当前的毫秒值。
microtime()是以秒为单位的毫秒数,因而值都是小数,乘以1000000将其换算为整数

它们的工作流程如下:
(1):首先,给srand()提供一个”种子”;,它是一个unsigned_int类型的值。
(2):_然后,调用rand(),它会根据提供给srand()的值返回一个随机数(范围在_0~32767之间)
(3):根据需要多次调用rand(),不断得到新的随机数。
(4):无论什么时候可以给srand()提供一个新的“种子”,从而进一步“随机化”rand()的
输出结果。

PHP 相关文章推荐
PHP学习之字符串比较和查找
Apr 17 PHP
PHP递归调用的小技巧讲解
Feb 19 PHP
shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
Jul 15 PHP
ThinkPHP标签制作教程
Jul 10 PHP
Yii使用find findAll查找出指定字段的实现方法
Sep 05 PHP
php实现阿拉伯数字和罗马数字相互转换的方法
Apr 17 PHP
php替换字符串中间字符为省略号的方法
May 04 PHP
PHP通过API获取手机号码归属地
May 28 PHP
PHP与Ajax相结合实现登录验证小Demo
Mar 16 PHP
简单的自定义php模板引擎
Aug 26 PHP
Laravel框架自定义验证过程实例分析
Feb 01 PHP
PHP var关键字相关原理及使用实例解析
Jul 11 PHP
解析如何屏蔽php中的phpinfo()函数
Jun 06 #PHP
深入PHP中慎用双等于(==)的详解
Jun 06 #PHP
解析PHP中如何将数组变量写入文件
Jun 06 #PHP
浅谈PHP强制类型转换,慎用!
Jun 06 #PHP
探讨file_get_contents与curl效率及稳定性的分析
Jun 06 #PHP
$_GET['goods_id']+0 的使用详解
Jun 06 #PHP
PHP编码规范的深入探讨
Jun 06 #PHP
You might like
解析php如何将日志写进syslog
2013/06/28 PHP
destoon出现验证码不显示时的紧急处理方法
2014/08/22 PHP
Yii2.0高级框架数据库增删改查的一些操作
2015/11/16 PHP
Yii全局函数用法示例
2017/01/22 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
JAVASCRIPT  THIS详解 面向对象
2009/03/25 Javascript
js 文件引入实现代码
2010/04/23 Javascript
理解Javascript_07_理解instanceof实现原理
2010/10/15 Javascript
jQuery Tools tab(幻灯片)
2012/07/14 Javascript
JavaScript将Table导出到Excel实现思路及代码
2013/03/13 Javascript
jQuery的DOM操作之删除节点示例
2014/01/03 Javascript
使用Node.js配合Nginx实现高负载网络
2015/06/28 Javascript
javascript禁止访客复制网页内容的实现代码
2015/08/05 Javascript
JavaScript实现自动消除按钮功能的方法
2015/08/05 Javascript
js实现新年倒计时效果
2015/12/10 Javascript
jquery.validate使用详解
2016/06/02 Javascript
Angular外部使用js调用Angular控制器中的函数方法或变量用法示例
2016/08/05 Javascript
Vue.js中数据绑定的语法教程
2017/06/02 Javascript
vue.js $refs和$emit 父子组件交互的方法
2017/12/20 Javascript
Vue实现商品分类菜单数量提示功能
2019/07/26 Javascript
JS实现移动端在线签协议功能
2019/08/22 Javascript
vscode中eslint插件的配置(prettier配置无效)
2019/09/10 Javascript
JavaScript定时器使用方法详解
2020/03/26 Javascript
JavaScript中数组去重的5种方法
2020/07/04 Javascript
vue2.* element tabs tab-pane 动态加载组件操作
2020/07/19 Javascript
js面向对象方式实现拖拽效果
2021/03/03 Javascript
python基础教程之面向对象的一些概念
2014/08/29 Python
在Python的Django框架中为代码添加注释的方法
2015/07/16 Python
Python的dict字典结构操作方法学习笔记
2016/05/07 Python
Pytorch提取模型特征向量保存至csv的例子
2020/01/03 Python
python数据爬下来保存的位置
2020/02/17 Python
Python日志syslog使用原理详解
2020/02/18 Python
设计毕业生简历中的自我评价
2013/10/01 职场文书
管理科学大学生求职信
2013/11/13 职场文书
《特殊的葬礼》教学反思
2014/04/27 职场文书
大学新生入学教育方案
2014/05/16 职场文书