以随机顺序生成 "Unique" 5 位 ID 和 javascript(99999 组合)
Generate "Unique" 5 digits ID with javascript (99999 combinations) in random order
我想在开头生成一个唯一的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
的恶作剧并没有真正改变这一点。见 birthday problem.
鉴于此,只需按照最直接的方法:生成一个由五位数字组成的随机字符串。
function GenerateUniqueID() {
return ('0000'+(Math.random() * (100000 - 101) + 101)|0).slice(-5);
}
或者,如果您只想要应用约束的最终整数:
function GenerateUniqueID() {
return (Math.random() * (78500000 - 78400101) + 78400101)|0;
}
我想在开头生成一个唯一的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
的恶作剧并没有真正改变这一点。见 birthday problem.
鉴于此,只需按照最直接的方法:生成一个由五位数字组成的随机字符串。
function GenerateUniqueID() {
return ('0000'+(Math.random() * (100000 - 101) + 101)|0).slice(-5);
}
或者,如果您只想要应用约束的最终整数:
function GenerateUniqueID() {
return (Math.random() * (78500000 - 78400101) + 78400101)|0;
}