2016-03-27 5 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ではなくなっているようです。

関連する問題