PHP随机取出不重复数字
有时需要不重复的数字,不管用于什么用途。我是写在随机抽取数据库里的数据,因为有几十万条的数据,随机抽取总会出点问题。不是连续太多就是超出,再且用rand()效率 也出错。join 总是出现很多连续的。就找了一个随机ID然后where in 来取出数据,这个主要ID 要连续的。要不然会出空值。我要随机100个,我就取出1000个,然后在选100个。
<?php
function createRandID($s,$e,$n){
// 注意,要先声明一个空数组,否则while里的in_array会报错
$arr = array();
// 使用while循环,只要不够N个就永远循环
while(count($arr)<=$n){
// 产生一个随机数
$a = rand($s,$e);
// 判断:如果产生的随机数不再数组里就赋值到数组里
// 主要避免产生重复的数字
if(!in_array($a,$arr)){
// 把随机数赋值到数组里
$arr[] = $a;
}
}
// 返回产生的随机数字
return implode($arr,',');
}
echo createRandID(1,100,5); //实例,从1~100内取出5个不重复的随机数字
?>
这个随机数代码,效率还不错!
说明:$s:起始数,$e:结束数,$n:取出个数