繁体   English   中英

JavaScript/Node.JS 中的随机二进制

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM