我需要在node.js中使用真正的随机整数。
我想知道是否有人有过使用underscore.js提供“随机性”的好坏的经验(例如使用_.random(min,max)函数)?
参考:http://underscorejs.org/#random
由于
答案 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));
};