Php 生成唯一随机值数组的函数
由于MysqlPhp 生成唯一随机值数组的函数,php,Php,由于Mysqlrand()非常耗时,我正在使用Mysqlmax()和PHP的替代方法。我编写了以下代码,用于获取随机产品标识: function RandomUniqueArray($min,$max,$limit){ $random_array = array(); if(isset($limit) && is_numeric($limit)){ for($i=0;$i<$limit;){ $rand_val =
rand()
非常耗时,我正在使用Mysqlmax()
和PHP的替代方法。我编写了以下代码,用于获取随机产品标识:
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;
}
with只需0.101微秒,但其结果集是重复的。唯一值数组很好,但整个集合重复。为什么会这样
我一个接一个地把这两个都称为
$random_array = RandomUniqueArray(1,64000,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;
}
函数随机值($min、$max、$limit)
{
$array=array();
$MAX=mt_rand($min$MAX);
对于($i=0;$i<$limit;$i++)
{
$array[$i]=mt_rand($min,$MAX);
while(is_array($array[$i],$array))//检查是否存在,if.Make new。
{
$array[$i]=mt_rand($min,$MAX);
}
}
返回$array;
}
您可以使用随机键来确保唯一性,并将键用作值,这是一个简单的示例(如果您有10000个产品,序列ID为50随机):对于($i=1;$iI)您的意思是说while(在数组中($array[$i],$array)),对吗?@Max AllanExactly!这就是我的意思。
$random_array = array_rand(array_fill(1,64000, true),4);
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;
}