通常情况下,当我们要生成一个随机字符串时,总是先创建一个字符池,然后用一个循环和mt_rand()或rand()生成php随机数,从字符池中随机选取字符,最后拼凑出需要的长度.
复制代码 代码如下:
function randomkeys($length)
{
ABCDEFGHIJKLOMNOPQRSTUVWXYZ,./l
t;?;#:@~[]{}-_=+)(*^%___FCKpd___0pound;"!'; //字符池
for($i=0;$i$length;$i++)
}
return $key;
$output='';
for ($a = 0; $a $length; $a++) {
return $output;
mt_rand — 生成更好的随机数
它可以产生随机数值的平均速度比 libc 提供的 rand() 快四倍.
所以建议楼主用这个函数 比rand要快
int mt_rand ([ int $min ], int $max ) $min为做小值 $max为最大值
php
echo "table";
echo "tr";
for ($j=0;$j10;$j++) // 内层循环控制列数
echo "td".mt_rand(10,100000)."/td"; // 产生随机数
echo "/tr";
echo "/table"
echo?mt_rand(1,100);
请使用rand函数
int?rand?(?int?$min?,?int?$max?)
$num = 1;//初始化一个变量为1
if($num = 100)
$num = 1;//若变量的数字大于一百,则返回变成1
echo $num."/br";//输出变量数字,即生成的数字,后面的/br是换行
echo $num."/br";//输出变量数字,即生成的数字,后面的/br是换行
echo $num."/br";//输出变量数字,即生成的数字,后面的/br是换行
$num++;//然后将变量加1,即在前面生成的数字基础上加一
扩展资料:
密码学安全伪随机性.其定义为,给定随机样本的一部分和随机算法,不能有效的演算出随机样本的剩余部分.
真随机性.其定义为随机样本不可重现.实际上只要给定边界条件,真随机数并不存在,可是如果产生一个真随机数样本的边界条件十分复杂且难以捕捉(比如计算机当地的本底辐射波动值),可以认为用这个方法演算出来了真随机数.
如用户注册生成随机密码,用户重置密码也需要生成一个随机的密码.随机密码也就是一串固定长度的字符串.下面介绍生成随机字符串的三种基本方法:
方法一
function?create_password($pw_length?=?
{?
$randpwd?=?";?
for?($i?=?0;?$i?$pw_length;?$i++)?
}?
return?$randpwd;?
方法二
②.、在 $chars 字符串中随机取一个字符.
③.、重复第二步n次,可得长度为n的密码.
//?密码字符集,可任意添加你需要的字符?
$password?=?";?
for?(?$i?=?0;?$i?$length;?$i++?)?
//?这里提供两种字符获取方式?
//?第一种是使用?substr?截取$chars中的任意一位字符;?
//?第二种是取字符数组?$chars?的任意元素?
//?$password?.=?substr($chars,?mt_rand(0,?strlen($chars)?–?1),?1);?
$password?.=?$chars[?mt_rand(0,?strlen($chars)?-?1)?];?
return?$password;?
方法三
②.、通过array_rand()从数组$chars中随机选出$length个元素.
③.、根据已获取的键名数组 $keys,从数组$chars取出字符拼接字符串.该方法的缺点是相同的字符不会重复取.
$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',?
'@','#',?'$',?'%',?'^',?'',?'*',?'(',?')',?'-',?'_',?
'[',?']',?'{',?'}',?'',?'',?'~',?'+',?'+',?'=',?',',?
'.',?';',?':',?'/',?'?',?'|');?
//?在?$chars?中随机取?$length?个数组元素键名?
$keys?=?($chars,?$length);?
for($i?=?0;?$i?$length;?$i++)?
//?将?$length?个数组元素连接成字符串?
$password?.=?$chars[$keys[$i]];?
//首先定义概率数组
//扩大1000倍便于计算
foreach($Probability?as?$k?=?$v){
$Probability[$k]?=?$v*1000;
$Num?=?0;
$Random?=?rand(1,1000);//生成随机数
if(?$Num?$Random?$Random?=?$v+$Num){
//进入这里表示随机数在哪一个范围内
$Range?=?explode("-",?$k);
//生成范围区间的随机数
$Result?=?rand($Range[0],$Range[1]);
echo?$Result;
break;
}else{
$Num?+=?$v;
php提供的随机数函数rand(),rand()函数将返回随机整数,具体使用方法如下:rand(min,max)
以上就是土嘎嘎小编大虾米为大家整理的相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!