2016-03-27 53 views
-2

我試圖找到生成一定長度的隨機二進制字符串的最快方法。如在,一定數量的隨機布爾值。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; 
} 

謝謝!

回答

0

目前還不清楚「隨機布爾」是什麼意思。

只需獲取需要的字節數,而無需通過整數轉換。

從node.js的documentation

const buf = crypto.randomBytes(256); 

的crypto.randomBytes()方法將阻塞,直到有足夠的熵。這通常不會超過幾毫秒。產生隨機字節的唯一時間可能是阻塞一段較長的時間,在引導之後,當整個系統熵仍然很低時。

如果你需要一些其他形式只是後處理字節,每個位本質上是隨機的。

注意:雖然函數名爲getRandomBits(n)它似乎實際上獲取n字節,而不是n位。