在提供真正的随机数字时,underscore.js有多好?

时间:2014-12-12 19:14:07

标签: javascript node.js underscore.js

我需要在node.js中使用真正的随机整数。

我想知道是否有人有过使用underscore.js提供“随机性”的好坏的经验(例如使用_.random(min,max)函数)?

参考:http://underscorejs.org/#random

由于

3 个答案:

答案 0 :(得分:9)

  

我需要真正的随机整数

没有伪随机数生成器能够为您提供真正的随机数。为此,你需要一些自然界的东西。

结帐http://www.random.org/clients/http/。他们使用大气噪声随机获得随机数。你可以得到。

答案 1 :(得分:4)

正如其他人所指出的那样,_.random是伪随机的,依赖于Math.random()。它不具有加密性,并且在大多数实现中都是可预测的。

您可能想要使用crypto.randomBytes。它调用了OpenSSL的RAND_bytes(除非你自己构建了针对不同SSL引擎的node.js),这保证了加密强的伪随机数,这几乎肯定是足够好的。

答案 2 :(得分:1)

您可以从the annotated source看到,底层函数是Math.random(),因此植入只能与JavaScript引擎的实现一样好:

random = function(min, max) {
    if (max == null) {
      max = min;
      min = 0;
    }
    return min + Math.floor(Math.random() * (max - min + 1));
  };