我需要一个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;
}