指定范围内多个不重复随机数

原创
2016-06-13 12:17:15663浏览

求一个指定范围内多个不重复随机数~
例如500以内6个不重复数
又快又省最好了
谢谢高手了!
------解决思路----------------------


function unique_random(& $result, $size=6, $min=0, $max=500){
$num = mt_rand($min, $max);
!in_array($num, $result) && array_push($result, $num);

return count($result) >= $size ? $result : unique_random($result, $size, $min, $max);
}
$result = array();
unique_random($result);
print_r($result);




Array
(
[0] => 132
[1] => 351
[2] => 43
[3] => 425
[4] => 449
[5] => 269
)

------解决思路----------------------
500个这么小的pool,完全可以用空间换时间。

$arr = array();
for($i=1;$i<=500; $i++){
array_push($arr, $i);
}

shuffle($arr);
$ret = array_slice($arr, 0, 6);
print_r($ret);

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。