使用 javascript(99999 种组合)以随机顺序生成 "Unique" 5 位数字 ID



我想在开头生成一个唯一的 5 位数字 ID + 784,约束,我只能执行一次脚本,并且我必须避免前 100 个数字,所以它不能是 00100 或更低。由于我使用时间戳并且我只能执行一次脚本,因此如何处理?

我这样做了,

这可能很愚蠢,但至少我试过了。

 ConcatedID();  
 function ConcatedID()
 {
  var uniqID = checkProtectedRange();
  if (checkProtectedRange())
    {
        var BarcodeID = 784 + uniqID;
        return BarcodeID;
    }
 else
        checkProtectedRange();
 }
 function checkProtectedRange()
{
var uniqueID = GenerateUniqueID();
var checkRange = uniqueID.substr(uniqueID.length - 3);
var checkRangeINT = parseInt(checkRange);
if (checkRangeINT <= 100)
        return (false);
else
        return (true);
 }
 function GenerateUniqueID()
{
var lengthID = 5;
var timestamp = + new Date();
var ts = timestamp.toString();
var parts = ts.split("").reverse();
var id = "";
var min  = 0;
var max = parts.length -1;
for (var i = 0; i < lengthID; ++i)
{
    var index = Math.floor(Math.random() * (max - min + 1)) + min;
    id += parts[index];
}
gs.log('Generate ID ' + id);
return id;                     
}    

如果无法跟踪以前使用的 ID,您就有机会防止重复。你对Date的恶作剧并没有真正改变这一点。请参阅生日问题。

鉴于此,只需遵循最直接的方法:生成一个由五位数字组成的随机字符串。

function GenerateUniqueID() {
  return ('0000'+(Math.random() * (100000 - 101) + 101)|0).slice(-5);
}

或者,如果您只想应用约束的最后一个整数:

function GenerateUniqueID() {
  return (Math.random() * (78500000 - 78400101) + 78400101)|0;
}

最新更新