由于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);
仅需0.101微秒,但其结果集重复均值。唯一值数组很好但重复整个集合。为什么会这样?
我一个接一个地打电话给这两个人
$random_array = RandomUniqueArray(1,64000,4);
和
$random_array = array_rand(array_fill(1,64000, true),4);
谢谢。
答案 0 :(得分:0)
我制作了一个剧本,只需要̣̣̣+ - 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;
}