第一种办法用mt_rand()
functionGetRandStr($length){
$str=’abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789′;
$len=strlen($str)-1;
$randstr=”;
for($i=0;$i<$length;$i++){
$num=mt_rand(0,$len);
$randstr.=$str[$num];
}
return$randstr;
}
$number=GetRandStr(6);
echo$number;
第二种办法(最快的)
仿制代码
functionmake_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;
}
第三种取当时时刻戳
functionget_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);
phpmt_rand生成0~1随机小数的作用比较
lcg_value说明
floatlcg_value(void)
lcg_value()回来规模为(0,1)的一个伪随机数。本函数组合了周期为2^31-85和2^31-249的两个同余发生器。本函数的周期等于这两个素数的乘积。
回来:规模为(0,1)的伪随机数。
phpfor($i=0;$i<5;$i++){echolcg_value().PHP_EOL;

php

}?>
输出:
0.11516515851995
0.064684551575297
0.68275174031189
0.55730746529099
0.70215008878091
两种生成0~1随机小数办法进行比较
1.履行时刻比较
履行10万次根据mt_rand()与mt_getrandmax()算法的运转时刻
php/**
*生成0~1随机小数
*@paramInt$min
*@paramInt$max
*@returnFloat*/functionrandFloat($min=0,$max=1){return$min+mt_rand()/mt_getrandmax()*($max-$min);
}//获取microtimefunctionget_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(“runtime%fmsrn”,($endtime-$starttime)*1000);?>
输出:runtime266.893148ms
履行10万次lcg_value()的运转时刻
php//获取microtimefunctionget_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(“runtime%fmsrn”,($endtime-$starttime)*1000);?>
输出:runtime86.178064ms
履行时刻上比较,因为lcg_value()直接是php原生办法,而mt_rand()与mt_getrandmax()需求调用两个办法,并需求进行核算,因此lcg_value()的履行时刻大约快3倍。
2.随机作用比较
根据mt_rand()与mt_getrandmax()算法的随机作用
php/**
*生成0~1随机小数
*@paramInt$min
*@paramInt$max
*@returnFloat*/functionrandFloat($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);?>

php随机数输出函数

相信咱们对rand()函数并不陌生、许多小伙伴在开发进程中都要是到这个函数,都知道这函数是生成php随机数的,rand()函数是将回来php随机数的整数!今天就带咱们详细了解一下php随机数生成的rand()函数!
首先来认识一下php提供的随机数函数rand(),php的rand()函数将回来随机整数,详细运用方法如下:rand(min,max)
可选参数min和max可以使rand()回来0到rand_max之间的伪随机整数,例如,想要5到15(包括5和15)之间的随机数,用rand(5,15).
下面我来看一个详细的示例,咱们做一个基本的函数调用,不设置详细的参数,咱们得到的随机数将不受min和max两个参数的约束,代码如下:
得到的成果:652696728(随机成果)1、运用php生成指定区间内的随机数假如咱们要生成两个数字之间的随机数,咱们需求为rand设定两个参数:这样,咱们得到的成果就在咱们的控制之中,他应该是minnum<=result<=maxnum;假设咱们要运用php生成10000到2000之间的随机数,咱们的代码应该这样写:echo(rand(1000,2000));?>
够简单吧,下面来点略微有些难度的,在本文的开端咱们说过,随机数的效果很大,咱们可以用php随机数解决一些杂乱的问题,2、运用php取得一个集合中的随机元素将设咱们需求从一个数组中取得一个随机元素,代码如下:$my_array=array(‘asp’,’php’,’网页’,’ajax’,’css’,’jquery’,’html’);
echo($my_array[rand(0,6)]);
可以想象,咱们得到的成果可能是asp、php或javascript等任何一个包含在数组中的元素,留意,咱们的my_array数组包含七个元素,咱们将rand()的参数设置为0到6之间,下面咱们运用两组随机数对上面的示例做功能增强,咱们需求一个随机数进行条件判别,另一个随机数做元素的输出,代码如下:$my_array=array(‘asp’,’php’,’javascript’,’ajax’,’css’,’jquery’,’html’);
$repetition=rand(0,6);
for($i=0;$i<=$repetition;$i++){
echo(‘iamlearning’.$my_array[rand(0,6)]);
echo(‘on51cto.com’);
}
咱们得到的成果可能像下面这样:
第一次运转咱们得到三条成果,因为咱们运用一个随机数限制显现的条数,所以得到的成果除了文章随机,显现的条数也是随机的.
第2次运转得到七条成果
或许你会问,php随机数只能做这些无聊的事儿吗?rand()看来并不是那么重要;你错了,想想随处可见的验证码、一些cms体系的随机文章提取、下载地址分配等,随机数在这些应用中发挥着重要效果,另外,在安全和算法领域,随机数的许多应用也值得咱们去深入研究,比如加密和同余法结构,代码如下:$ip2id=round(rand(600000,2550000)/10000);//第一种方法,直接生成
$ip3id=round(rand(600000,2550000)/10000);
$ip4id=round(rand(600000,2550000)/10000);
//下面是第二种方法,在以下数据中随机抽取
$arr_1=array(“218″,”218″,”66″,”66″,”218″,”218″,”60″,”60″,”202″,”204″,”66″,”66″,”66″,”59″,”61″,”60″,”222”,
“221”,”66″,”59″,”60″,”60″,”66″,”218″,”218″,”62″,”63″,”64″,”66″,”66″,”122″,”211″);
$randarr=mt_rand(0,count($arr_1)-1);
$ip1id=$arr_1[$randarr];
echo$ip1id;
echo”.”;
echo$ip2id;
echo”.”;
echo$ip3id;
echo”.”;
echo$ip4id;
?>
总结:
本文便是给咱们介绍一下php随机数生成的rand()函数,关于许多小伙伴们来说是一个很不错的挑选,期望对你工作有所帮助~

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。