Javascript 如何在每次运行java脚本代码时创建唯一的值?

Javascript 如何在每次运行java脚本代码时创建唯一的值?,javascript,node.js,typescript,javascript-objects,Javascript,Node.js,Typescript,Javascript Objects,我正在使用Math.random创建一个唯一的值。 但是,几天后,如果我运行相同的脚本,它会生成与先前创建的相同的值 每次运行脚本时,是否有任何方法可以创建唯一的值。 下面是我的随机方法代码 var RandomNo = function (Min,Max){ return Math.floor(Math.random() * (Max - Min + 1)) + Min; } module.exports = RandomNo; 实现唯一值的最佳方法是将Date()用作毫秒。这种不

我正在使用Math.random创建一个唯一的值。 但是,几天后,如果我运行相同的脚本,它会生成与先前创建的相同的值

每次运行脚本时,是否有任何方法可以创建唯一的值。 下面是我的随机方法代码

var RandomNo = function (Min,Max){
    return Math.floor(Math.random() * (Max - Min + 1)) + Min;
}

module.exports = RandomNo;

实现唯一值的最佳方法是将Date()用作毫秒。这种不断增长的时间表示法永远不会重复

这样做:

var RamdomNo = new Date().getTime();
完成了

编辑

如果您受到长度限制,上述解决方案将不会对您有所帮助,因为重复次数是可以预测的,越短重复次数越大

然后,我建议采用以下方法:

// turn Integer into String. String length = 36
function dec2string (dec) {
  return ('0' + dec.toString(36)).substr(-2);
}

// generate a 20 * 2 characters long random string
function generateId () {
  var arr = new Uint8Array(20);
  window.crypto.getRandomValues(arr);

  // return 5 characters of this string starting from position 8.
  // here one can increase the quality of randomness by varying
  // the position (currently static 8) by another random number <= 35
  return Array.from(arr, this.dec2string).join('').substr(8,5);
}

// Test
console.log(generateId());
//将整数转换为字符串。字符串长度=36
函数dec2字符串(dec){
返回('0'+dec.toString(36)).substr(-2);
}
//生成一个20*2个字符长的随机字符串
函数generateId(){
var arr=新的UINT8阵列(20);
window.crypto.getRandomValues(arr);
//从位置8开始返回此字符串的5个字符。
//在这里,我们可以通过改变参数来提高随机性的质量

//位置(当前为静态8)通过另一个随机数可能重复最终避免重复随机数的唯一方法是跟踪以前使用的值,并对照以前使用的值检查随机输出,如果找到,则创建一个不在列表中的新随机值。如果您共享实际使用此随机值的目的,我们最好提出一些想法/备选方案。如果您的唯一目标是获得唯一的数字,并且您不受该值长度的限制,请使用UTC日期表示法(毫秒)。您好,谢谢您的回答,但我如何将其限制在5位值内。我要查找的随机值必须仅为5位。您好,詹姆斯,如果您一定要限制为5个字符,增加的数字没有意义,因为你无法防止重复。所以我编辑了我的答案,并根据你的需要提出了更好的解决方案。