return array_slice($rand_array,0,$limit);//截取前$limit 个
}
print_r(NoRand());
?>
或者不
shuffle 的话
代码如下:
<?php
$tmp=array();
while(count($tmp)<5){
$tmp[]=mt_rand(1,20);
$tmp=array_unique($tmp);
}
print join(',',$tmp);
?>
上面都是纸上谈兵了,下面来真实的了,要求如下
有
25 幅作品拿去投票,一次投票需要选 16 幅,单个作品一次投票只能选择一次。前面
有个程序员捅了漏子,忘了把投票入库,有
200 个用户产生的投票序列为空。那么你会如何
填补这个漏子?
当然向上级反映情况。但是我们这里讨论的是技术,就是需要生成
1-25 之间的 16 个不
重复的随机数,去填补。具体怎么设计函数呢?将随机数存入数组,再在数组中去除重复的
值,即可生成一定数量的不重复随机数
代码如下:
<?php
/*
* array unique_rand( int $min, int $max, int $num )
* 生成一定数量的不重复随机数
* $min 和 $max: 指定随机数的范围
* $num: 指定生成数量
*/
function unique_rand($min, $max, $num) {
$count = 0;
$return = array();
while ($count < $num) {
$return[] = mt_rand($min, $max);
$return = array_flip(array_flip($return));
$count = count($return);
}
shuffle($return);
return $return;
}
$arr = unique_rand(1, 25, 16);
sort($arr);
$result = '';