background image

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 = '';