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

时间:2018-05-19 23:26:42

标签: 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;

1 个答案:

答案 0 :(得分:1)

获得唯一值的最佳方法是使用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());

这对方法生成一个由字母和数字组成的40个字符长的随机字符串。然后你从它中选择一个连续5个字符的序列。