如何使crypto.randomBytes()替换Math.random()

时间:2014-10-02 00:02:25

标签: node.js

我需要一个加密安全随机数生成器来替换Math.random()

我遇到crypto.randomBytes()但是,它返回一个字节数组。有什么方法可以将字节数组转换为0-1(以便它与Math.random

兼容

2 个答案:

答案 0 :(得分:-1)

您可以执行以下操作:

var randomVal = (crypto.randomBytes(1)[0] / 255);

答案 1 :(得分:-1)

这应该可以解决问题:

crypto.randomBytes(8).readUInt32LE() / 0xffffffff;

randomBytes生成8个随机字节,然后将其读取为little endian中的32位无符号整数。 32位无符号int的最大值为0xffffffff(或十进制的4,294,967,295)。通过将随机生成的32bit int除以其最大值,您将得到一个介于0和1之间的值。