[英]Random Binary in JavaScript/Node.JS
我试图找到生成特定长度的随机二进制字符串的最快方法。 例如,一定数量的随机布尔值。
这是我当前的代码 - 有没有更快的方法?
function getRandomBits(n){
var generator = crypto.pseudoRandomBytes;
var generated = "";
while(generated.length < n){
var randomBytes = generator(4).readUInt32BE(0, true).toString(2);
//Remove first byte as this is always one and so not random
randomBytes = randomBytes.substring(1, randomBytes.length - 1);
if(n - generated.length > randomBytes.length) generated = generated + randomBytes;
else generated = generated + randomBytes.substring(0, n - generated.length);
}
console.log(generated);
return generated;
}
谢谢!
目前还不清楚“随机布尔值”是什么意思。
只需获取所需的字节数,而无需进行整数转换。
从 node.js 文档:
const buf = crypto.randomBytes(256);
crypto.randomBytes() 方法将阻塞,直到有足够的熵。 这通常不会超过几毫秒。 可以想象,生成随机字节的唯一时间可能会阻塞更长的时间是在启动之后,此时整个系统的熵仍然很低。
如果您需要其他形式只是对字节进行后处理,则每一位本质上都是随机的。
注意:尽管该函数名为getRandomBits(n)
但它似乎实际上获取了n
个字节,而不是n
位。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.