百翔网络在从事西安网站建设,和优化的过程中总结出以下几种获取随机数的方法,现在分享给大家:
第一种:从指定的范围取指定数量的随机数,不重复,先将指定的范围放到一个数组里,在从数组中取,每次取出一个都将这个数从数组中剔除,防止下次再取到,从而达到不重复的目的.<?php
//在100个自然数中取随机数
$list = 100;
//取几个
$nu = 10;
for($s; $s < $list; $s++) {
$a[] = $s;
}
for($i; $i < $nu; $i = $key) {
for($n = rand(0,($list - 1)); $a[$n] == $n; $a[$n] = $list)
{
$key++;
$num[] = $n;
}
}
print_r($num);
?>
第二种:php 生成随机码 实际运用 事例
分类: PHP 2009-03-24 15:20 237人阅读 评论(0) 收藏 举报
define("ACTIVE_PREFIX", "1"); //可以标识为生成激活码的批次
define("ACTIVE_RAND_NUM", 6); //随机数的数目
define("ACTIVE_START", 0); //需要产生的随机数数目开始值
define("ACTIVE_END", 500); //需要产生的随机数数目结束值
define("NUM_PREFIX", 0); //补足随机数的宽度
define("NUM_LEN", strlen(ACTIVE_END - ACTIVE_START)); //随机数的宽度
for($i = ACTIVE_START; $i <= ACTIVE_END; $i ++){
$num = $i;
$len = strlen($num);
if ($len < NUM_LEN) $num = str_repeat(NUM_PREFIX, (NUM_LEN - $len)) . $num;
$code = ACTIVE_PREFIX . getRandoms(ACTIVE_RAND_NUM) . $num;
}
function getRandoms($length) {
$arr1 = range(0, 9);
$arr2 = range('a','z');
$arr3 = range('A','Z');
$pattern = array_merge($arr1,$arr2,$arr3); //合并数组
$len = count($pattern) - 1;
$key = "";
for($i = 0; $i < $length; $i ++) {
$key .= $pattern[mt_rand(0, $len)]; //生成php随机数
}
return $key;
}
第三种:通常情况下,当我们要生成一个随机字符串时,总是先创建一个字符池,然后用一个循环和mt_rand()或rand()生成php随机数,从字符池中随机选取字符,最后拼凑出需要的长度,代码如下:
<?php
function randomkeys($length){
$pattern='1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLOMNOPQRSTUVWXYZ,./<>?;#:@~[]{}-_=+)(*&^%___FCKpd___0pound;"!'; //字符池
for($i=0;$i<$length;$i++){
$key.=$pattern{mt_rand(0,35)};//生成php随机数
}
return $key;
}
echo randomkeys(8);
?> |
这个php随机函数能生成XC*=z~7L这样的字符串,够随机!
现在介绍另一种用PHP生成随机数的方法:利用chr()函数,省去创建字符池的步骤,代码如下:
<?php
function randomkeys($length){
$output='';
for($a=0;$a<$length;$a++){
$output.=chr(mt_rand(33,126));//生成php随机数
}
return $output;
}
echo randomkeys(8);
?> |