由于Mysql rand()
是耗时的,我使用Mysql max()
和PHP的替代方法。我写了下面的代码来获取随机的product_id:
function RandomUniqueArray($min,$max,$limit){
$random_array = array();
if(isset($limit) && is_numeric($limit)){
for($i=0;$i<$limit;){
$rand_val = mt_rand($min, $max);
if(!in_array($rand_val, $random_array)){
$random_array[] = $rand_val;
$i++;
}
}
}
return $random_array;
}
这工作得很好,因为我想每次它给出不同的结果集,具有不同的唯一值,但它需要6.232微秒。我从谷歌得到的其他信息是:
$random_array = array_rand(array_fill($min,$max, true),$limit);
with只需要0.101微秒,但是它的结果集是重复的。唯一值数组可以,但是整个集合是重复的。为什么会这样?
我把这两个依次称为
$random_array = RandomUniqueArray(1,64000,4);
和
$random_array = array_rand(array_fill(1,64000, true),4);
谢谢。
我做了一个脚本,它只需要* * * +- 4.5E-6。
试试。
function randomValue($min,$max,$limit)
{
$array = Array();
$MAX = mt_rand($min,$max);
for($i = 0;$i < $limit;$i++)
{
$array[$i] = mt_rand($min,$MAX);
while( is_array($array[$i],$array) ) //To check if exist, if. Make new.
{
$array[$i] = mt_rand($min,$MAX);
}
}
return $array;
}