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