我试图使用这个顽固的回购来测试随机数的数字流(https://github.com/reubenhwk/diehard)。它为它所读取的文件类型提供了这些细节:
然后命令 死硬死硬的顽固的 将提示输入要测试的文件的名称。
该文件必须是格式="未格式化",访问="直接"二进制 文件为10到1200万字节。
这些是特定于fortran的文件约定,不是吗?问题是,我使用lfsr-generator来生成我的随机二进制流,并且在C中。我尝试将二进制流的fputc
做为文本文件或{{{I} 1}}文件,但是死硬似乎并没有接受它。
我没有遇到过fortran的经历。有没有办法用C创建这个文件类型?我是否只需咬紧牙关并让C调用创建文件的fortran子程序?这是我的C代码供参考:
.bin
答案 0 :(得分:3)
您正在创建二进制文件。您的问题是您每个字节只写一个随机位(并将其扩展为文本)。迪哈德希望每一点都是随机的。所以在你写之前一次累加8位:
do {
int b = 0;
for (int i = 0; i < 8; i += 1) {
v = shift_lfsr(v);
b <<= 1;
b |= (v & 1);
}
fputc(b, fp);
. . .