我想评估Node.js中的伪随机原始随机数生成器(prng):Math.random
以及其他第三方prng。
我使用的测试套件是ENT。
我面临的问题是如何通过Node.js中的prng为ENT生成输入文件:
function generateNumber() {
return Math.floor(Math.random() * 10)
}
const numbers = []
for (let i = 0; i < 10000000;i++) {
const r = generateNumber()
numbers.push(r)
}
let result = ''
numbers.map(function (t) { result += t })
const fs = require('fs')
fs.writeFile('output.txt', result)
从上面生成的文件与ENT不兼容。但是,我在Linux命令中创建了另一个文件:
dd if=/dev/random of=random_output count=8192
这个输出效果很好。我发现我用nodejs创建的文件是0和1作为文本文件。也许序列应该转换为二进制文件。我想知道如何修改我的javascript代码?
答案 0 :(得分:0)
是的,ent
需要纯二进制数据。这是一种方法:
let words = new Uint16Array(4096);
for (let i = 0; i < 4096; i += 1) {
words[i] = Math.floor(65536 * Math.random());
}
let fs = require('fs');
fs.writeFile('words.bin', new Buffer(words.buffer), 'binary');