【www.bbyears.com--php常用代码】
第一种算法,CSDN上别人的想法
代码如下 $num= 0; $array=array(1, 2, 3, 4, 5, 6, 7, 8, 9); $arr=array(); $g= 5; $tag= true; while($tag) { $count=count($array); $t= rand(0, 1); if($t== 1) { $arr[] =$array[$num]; unset($array[$num]); } $num++; if(count($arr) ==$g) { $tag= false; } if($num==$count) { $num= 0; //循环 } } var_dump($arr);第二种算法,自己想的。
可以在每次取出数据之后将该数据和最后没有获取的数据替换,然后再去没有取得的数据中随机获取值
代码如下 functionswap(&$a, &$b) { $temp=$b; $b=$a; $a=$temp; } $result=array(); $src=array(); for($i= 0 ;$i< 40 ;$i++) { $src[] =$i+ 1; } $arr_len=count($src); $count= 20; $index= 0; while($index<$count) { $random= rand(0,$arr_len-$index- 1); $result[] =$src[$random]; swap($src[$random] ,$src[$arr_len-$index- 1]); $index+= 1; } print_r(json_encode($result)); print_r(json_encode($src));