【发布时间】:2017-08-30 15:15:42
【问题描述】:
我想评估 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创建的文件是0s和1s作为文本文件。也许应该将序列转换为二进制文件。我想知道如何修改我的 javascript 代码?
【问题讨论】:
-
你是在windows平台上用node.js创建的文件吗?
-
@Psi 是 windows 10
-
所以也许你需要在写入文件之前将文件切换到二进制模式。否则,windows 将所有 0x0a 转换为 0x0d 0x0a =>
fs.writeFile('output.txt', result, 'wb') -
如果这是关于创建特定类型文件的 node.js 问题,请准确描述文件中的内容。目前尚不清楚该文件应包含什么。您使用当前 node.js 创建的是一个巨大的串联字符串,由一大堆浮点数压缩在一起,它们之间没有分隔符,这可能对任何人都没有用。您希望实际文件是什么样的?
标签: javascript node.js random