函数生成唯一随机值数组


Function generating Unique Random Values Array

由于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;
}