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));
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!