第一种方法用mt_rand()

function GetRandStr($length){

$str='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';

$len=strlen($str)-1;

$randstr='';

for($i=0;$i

$num=mt_rand(0,$len);

$randstr .= $str[$num];

}

return $randstr;

}

$number=GetRandStr(6);

echo $number;

第二种方法(最快的)

function make_password( $length = 8)

{//密码字符集,可任意添加你需要的字符

$chars = 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', '!',

'@','#', '$', '%', '^', '&', '*', '(', ')', '-', '_',

'[', ']', '{', '}', '', '~', '`', '+', '=', ',',

'.', ';', ':', '/', '?', '|');//在 $chars 中随机取 $length 个数组元素键名

$keys = array_rand($chars, $length);$password = '';for($i = 0; $i < $length; $i++)

{//将 $length 个数组元素连接成字符串

$password .= $chars[$keys[$i]];

}return $password;

}

第三种取当时时间戳

function get_password( $length = 8)

{$str = substr(md5(time()), 0, $length);//md5加密,time()当前时间戳

return $str;

}

第四种打乱字符串

functiongetrandstr(){$str='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890';$randStr = str_shuffle($str);//打乱字符串

$rands= substr($randStr,0,6);//substr(string,start,length);返回字符串的一部分

return $rands;

}

第五种打乱数组并截取

functionverCode(){$arr = array_merge(range('A','Z'), range('a', 'z'), range('1', '9'));shuffle($arr);$newArr = array_slice($arr, 0, 4);$str = implode('', $newArr);return $str;

}

创建验证码(直接用函数生成,比较方便快捷)

$code = rand(10000, 99999);

php mt_rand生成0~1随机小数的效果比较

lcg_value说明

float lcg_value ( void )

lcg_value() 返回范围为 (0, 1) 的一个伪随机数。本函数组合了周期为 2^31 - 85 和 2^31 - 249 的两个同余发生器。本函数的周期等于这两个素数的乘积。

返回:范围为 (0, 1) 的伪随机数。

}?>

输出:

0.11516515851995

0.064684551575297

0.68275174031189

0.55730746529099

0.70215008878091

两种生成0~1随机小数方法进行比较

1.执行时间比较

执行10万次基于mt_rand()与mt_getrandmax()算法的运行时间

* 生成0~1随机小数

* @param Int $min

* @param Int $max

* @return Float*/

function randFloat($min=0, $max=1){return $min + mt_rand()/mt_getrandmax() * ($max-$min);

}//获取microtime

functionget_microtime(){list($usec, $sec) = explode(' ', microtime());return (float)$usec + (float)$sec;

}//记录开始时间

$starttime =get_microtime();//执行10万次获取随机小数

for($i=0; $i<100000; $i++){

randFloat();

}//记录结束时间

$endtime =get_microtime();//输出运行时间

printf("run time %f ms\r\n", ($endtime-$starttime)*1000);?>

输出:run time 266.893148 ms

执行10万次lcg_value()的运行时间

functionget_microtime(){list($usec, $sec) = explode(' ', microtime());return (float)$usec + (float)$sec;

}//记录开始时间

$starttime =get_microtime();//执行10万次获取随机小数

for($i=0; $i<100000; $i++){lcg_value();

}//记录结束时间

$endtime =get_microtime();//输出运行时间

printf("run time %f ms\r\n", ($endtime-$starttime)*1000);?>

输出:run time 86.178064 ms

执行时间上比较,因为lcg_value()直接是php原生方法,而mt_rand()与mt_getrandmax()需要调用两个方法,并需要进行计算,因此lcg_value()的执行时间大约快3倍。

2.随机效果比较

基于mt_rand()与mt_getrandmax()算法的随机效果

* 生成0~1随机小数

* @param Int $min

* @param Int $max

* @return Float*/

function randFloat($min=0, $max=1){return $min + mt_rand()/mt_getrandmax() * ($max-$min);

}header('content-type: image/png');$im = imagecreatetruecolor(512, 512);$color1 = imagecolorallocate($im, 255, 255, 255);$color2 = imagecolorallocate($im, 0, 0, 0);for($y=0; $y<512; $y++){for($x=0; $x<512; $x++){$rand =randFloat();if(round($rand,2)>=0.5){

imagesetpixel($im, $x, $y, $color1);

}else{

imagesetpixel($im, $x, $y, $color2);

}

}

}

imagepng($im);

imagedestroy($im);?>

lcg_value()的随机效果

<?phpheader ('content-type: image/png');$im = imagecreatetruecolor(512, 512);$color1 = imagecolorallocate($im, 255, 255, 255);$color2 = imagecolorallocate($im, 0, 0, 0);for($y=0; $y<512; $y++){for($x=0; $x<512; $x++){$rand = lcg_value();if(round($rand,2)>=0.5){

imagesetpixel($im, $x, $y, $color1);

}else{

imagesetpixel($im, $x, $y, $color2);

}

}

}

imagepng($im);

imagedestroy($im);?>

3.随机阅读推荐

php生成指定范围随机数两位小数_PHP生成随机数的几种方法相关推荐

  1. php数字两位小数_PHP保留两位小数

    我们在项目里经常需要保留小数位数,比如显示金额的时候通常需要保留两位小数位数,除了可以在设计数据库的时候将金额字段设置为decimal(n,2)形式的,通过PHP也可以处理小数数位,PHP中可以处理数 ...

  2. php数字两位小数_PHP实现保留两位小数

    我们在php开发的时候经常需要保留小数位数,比如显示金额的时候通常需要保留两位小数位数,除了可以在设计数据库的时候将金额字段设置为decimal(n,2)形式的,通过PHP也可以处理小数数位,PHP中 ...

  3. php数字两位小数_PHP保留两位小数的几种方法

    代码如下所示: $num = 10.4567; //第一种:利用round()对浮点数进行四舍五入 echo round($num,2); //10.46 //第二种:利用sprintf格式化字符串 ...

  4. php数字两位小数_PHP 数字价格格式化,保留两位小数

    $num=3.545; $precision=2; 1.php保留两位小数并且四舍五入,代码如下: round($num, $precision) 2.php保留两位小数并且不四舍五入,代码如下 sp ...

  5. php数字两位小数_php保留两位小数的方法

    这篇文章主要介绍了PHP保留两位小数的几种方法,在一些商品价格上也经常遇到这样的需求,今天小编给大家分享的实例代码,需要的朋友可以参考下 推荐教程:PHP视频教程 代码如下所示:$num = 10.4 ...

  6. php保留两位小数 非四舍五入,PHP保留两位小数并且四舍五入及不四舍五入的方法...

    PHP保留两位小数并且四舍五入及保留两位小数并且不四舍五入该如何实现,不会的朋友可以详细参考下本文,希望对大家有所帮助 php保留两位小数并且四舍五入$num = 123213.666666; ech ...

  7. php数字两位小数_PHP保留两位小数的几种方法【转】

    代码如下所示: $num = 10.4567; //第一种:利用round()对浮点数进行四舍五入 echo round($num,2); //10.46 //第二种:利用sprintf格式化字符串 ...

  8. php数字两位小数_php 数字(价格)保留两位小数

    PHP中对一些商品的价格计算或价格的的展示,需要精确到小数点后的两位数字,也就是我们平时RMB中的分的单位.那在PHP中如何展示商品的价格,并保留到分的单位的呢?下面教程就来讲解一下. PHP num ...

  9. php数字两位小数_php数字两位小数

    php关于金额比较引发的问题(转) 做电子商务的时候一般会涉及到金额的比较,按正常的思路来看用><=这些个符号就可以了.可是要是到程序上来搞这个的话就出大事了.现在看下这段代码: $f = ...

最新文章

  1. 面向对象数据库NDatabase_初识
  2. Spring-基于注解的配置[03Bean作用范围和生命周期方法]
  3. OpenCV中SUFR、SIFT无法使用的原因及解决办法
  4. Jedis干什么用的
  5. 14.5.5 Creating a File-Per-Table Tablespace Outside the Data Directory
  6. MacOS命令终端(CMD)的快捷键/终端快捷键
  7. 【飞秋】Asp.net MVC2 model验证 看似美好,实则让人失望。
  8. 我的世界java版使用剑_我的世界:JAVA版藏“私货”内置绝世好剑与神功,你玩的版本有吗...
  9. 震惊!!!CSS垂直居中竟然有这么多方法~
  10. 创建目录_Word创建自动目录,你会了吗?
  11. 图片base64的换行问题处理
  12. 【程序设计与实践】实验四:自动寄存柜(C语言)
  13. ydisk安卓版本_mydisktest
  14. 从0开始学习 GitHub 系列之「08.如何发现优秀的开源项目」----转载自stormzhang 原创文章
  15. VBA WORD 段落前加空行
  16. CSS 渐变色 (超好看)
  17. ue4 改变枢轴位置_UE4虚幻引擎学习云笔记(五)-静态网格体编辑器
  18. python进阶指南(参考书籍)
  19. 用微博之力构建3Q之战
  20. Vue 学习——监听器(侦听器):普通监听和深度监听

热门文章

  1. java11.0.4安装教程_下载安装Java
  2. 「JavaSE」-基础语法
  3. 跑步耳机哪个牌子好?跑步运动耳机品牌推荐
  4. JS表单验证-12个常用的JS表单验证
  5. assembly.xml
  6. 小米pro电脑风扇卡顿问题解决方案
  7. 地图找房(五)01——移动小区到地图中心
  8. vlookup怎么用详细步骤,看这一篇就够了
  9. macbook terminal转换进制
  10. 网络学习:交换机里的常用命令