生成";独特的;以随机顺序使用javascript(99999个组合)的5位ID

生成";独特的;以随机顺序使用javascript(99999个组合)的5位ID,javascript,uniqueidentifier,Javascript,Uniqueidentifier,我想在开始时生成一个唯一的5位数ID+784,约束条件是,我只能执行一次脚本,并且我必须避免前100个数字,所以它不能是00100或更低。因为我使用时间戳,而且我只能执行我的脚本一次,所以我如何处理这个问题 我这么做了也许很愚蠢但至少我试过了 ConcatedID(); function ConcatedID() { var uniqID = checkProtectedRange(); if (checkProtectedRange()) { var

我想在开始时生成一个唯一的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;                     
}    
ConcatedID();
函数ConcatedID()
{
var uniqID=checkProtectedRange();
如果(选中ProtectedRange())
{
var条码ID=784+uniqID;
返回条码ID;
}
其他的
选中ProtectedRange();
}
函数checkProtectedRange()
{
var uniqueID=GenerateUniqueID();
var checkRange=uniqueID.substr(uniqueID.length-3);
var checkRangeINT=parseInt(checkRange);

如果(checkRangeINT无法跟踪以前使用的ID,那么您就有机会防止重复。您在
Date
上的花招并不会真正改变这一点。请参阅

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

function GenerateUniqueID() {
  return ('0000'+(Math.random() * (100000 - 101) + 101)|0).slice(-5);
}
或者,如果只需要应用约束的最终整数:

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

只有五个数字,你真的能称之为唯一的吗?@Ourobrus它必须适用于有限的组合,但对于这些组合,我没有选择唯一的要求…根本没有足够的组合使数字不安静,有5个数字,你最多可以有99999个组合,如果你每秒生成一个数字,你就可以我会在27分钟后用完。超过27小时,这是原来的60倍,没有更好的。我注意到你在里面引用了“条形码”。条形码不应该随机生成。有效的条形码有特定的算法(校验和),否则它们应该是顺序的。