PHP函数生成唯一的n位随机数


PHP function to generate Unique n digits random numbers

我需要一个php函数,创建n位随机数是唯一的;这是我尝试的

//Function to generate random code
 function getUniqueCode($length)
 {
   for($i=0;$i<$length;$i++){
   if($i==0)
    $code = str_pad(mt_rand(1, 9), 1, '0', STR_PAD_LEFT);
   else
    $code .=    str_pad(mt_rand(0, 9), 1, '0', STR_PAD_LEFT);
   }
   return $code;
 }

如果我使用这个函数生成9位数的数字。129534546,是否有可能生成非唯一的数字,如果是,我应该改变什么,以便我可以确保重复数字的可能性为零

凡事都有可能,或大或小

你可以从以前存储的数字中检查,如果你把它们保存在数据库或其他地方。

第二个选项是,将随机数附加到名为numbers.txt的文件中,以,分隔,当生成新数字时,检查该文件是否匹配,如果匹配,则生成另一个数字

总是有机会你可能最终得到重复的数字,不确定什么时候,但它可能,所以改变代码为:

function getUniqueCode($length)
{
   for($i=0;$i<$length;$i++){
   if($i==0)
      $code = str_pad(mt_rand(1, 9), 1, '0', STR_PAD_LEFT);
   else
      $code .=    str_pad(mt_rand(0, 9), 1, '0', STR_PAD_LEFT);
    }
    return $code;
 }

 $tempArray = array();  

 $tempCode = getUniqueCode(9); //here 9 is number digit you want randon number you want
 if (!in_array($tempCode, $tempArray)) {
     $tempArray[] = $tempCode;
 }