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

时间:2015-05-22 13:31:42

标签: php

我需要一个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,是否有可能生成不唯一的数字,如果是,我应该更改什么,以便我可以确定重复数字的可能性为零

2 个答案:

答案 0 :(得分:0)

总有可能,无论是更小还是更大。

您可以检查以前存储的号码,是否将它们保存在数据库或其他内容中。

OR

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

答案 1 :(得分:0)

总有一个机会你可能最终得到重复的数字,不知道什么时候可能,但可能会改变代码:

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