PHP 随机数

在任何语言中,我们都能看到随机数的身影,不例外,PHP也为我们实现了随机函数。本文将讲解获取随机数、获取随机小数,以及获取指定步长的随机数。

在PHP中,系统实现了rand()mt_rand()两种随机函数。两者之间的区别在于:rand()函数式libc中定义的随机函数的简单包装器,mt_rand()函数式则是非正式用来替换rand()的。而且,mt_rand()的速度要比rand()快上4倍。

1. 利用mt_rand()获取0-10的随机整数(未经处理的mt_rand()函数只能返回整数)

/**
* @param min 随机数最小值
* @param max 随机数最大值
*/
   echo mt_rand(0, 10);

 

2. 利用mt_rand()获取小数随机数

/**
* frand函数作用:产生随机小数
* @param min 随机数最小值
* @param max 随机数最大值
* @param decimals 小数位数
* 其中,pow(x, y)函数为幂函数,返回x的y次
*/
function frand($min, $max, $decimals = 0) {
   $scale = pow(10, $decimals);
   return mt_rand($min * $scale, $max * $scale) / $scale;
}

 

3. 利用mt_rand()获取指定步长的随机数(如果需要3的倍数,那么步长就为3)

 /**
* frand函数作用:产生指定步长的随机数
* @param min 随机数最小值
* @param max 随机数最大值
* @param precision 步长
*/
function frand($min, $max, $precision = 1) {
   //TODO:检测$precision != 0;
   $scale = 1 / $precision;
   return mt_rand($min * $scale, $max * $scale) / $scale;
}

 

4. 利用mt_rand()获取字符串(可用于随机密码)

/**
* frand函数作用:产生随机密码
* @param min 密码最短值
* @param max 密码最长值
*/
function frand($min, $max) {
   //列出所有字符和数字
   $validChars = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890';
   //获得字串长度,避免获取随机数时溢出
   $maxChar = strlen($validChars - 1);
   //获得密码随机长度
   $length = mt_rand($min, $max);
   $password = '';
   //循环获得每一位密码
   for($i = 0; $i < $length; $++) {
      $password .= $validChars[mt_rand(0, $maxChar)];
   }
   return $password;
}

参考资料:

《PHP5范例代码查询词典 Lee Babin等著》

http://www.jb51.net/article/32836.htm

发表评论

电子邮件地址不会被公开。