如何对二进制文件执行Dieharder测试并指定序列长度解决报错
Dieharder 二进制随机序列测试操作方法
报错原因说明
你使用-g 202参数触发报错,是因为该参数对应读取Dieharder自定义格式的ASCII文本输入,你提供的是原生二进制文件,不符合格式要求,所以返回格式错误。
前置步骤:拆分二进制文件
你的原始文件共10^8位,需拆分得到100个各1000000位的二进制块。1000000位等价于125000字节(8位=1字节),使用如下命令拆分:split -b 125000 pseudoseq202.bin seq_part_
执行后会生成seq_part_aa、seq_part_ab等共100个拆分文件,每个文件大小刚好为1000000位。
单文件测试命令
使用-g 201参数(原生二进制输入模式),补充参数控制读取长度避免循环重读导致测试失败,正确命令如下:dieharder -g 201 -f seq_part_aa -a -n 1000000 -b 1
参数说明:
-g 201:指定输入为原生二进制文件-f <文件名>:指定待测试的二进制文件路径-a:运行所有标准随机数测试-n 1000000:指定总共读取1000000个样本,匹配单份拆分文件的总位数,避免Dieharder循环重读文件导致测试结果异常-b 1:指定每个样本的位宽为1,匹配二进制序列输入格式
批量测试方法
如果需要一次性测试所有拆分后的100个文件,可以使用bash循环批量执行,结果统一输出到日志文件:
for part in seq_part_*; do echo "Testing $part..." dieharder -g 201 -f "$part" -a -n 1000000 -b 1 >> dieharder_test_result.txt done
结果判定规则
单轮测试的p值落在0.01~0.99区间即判定为通过。100次测试的p值整体符合均匀分布,即可证明序列随机性达标。
内容的提问来源于stack exchange,提问作者Shyamalendu Kandar
相关产品推荐
相关产品推荐

