[英]Piping into Dieharder with Python
我正在尝试使用命令将 Blum Blum Shub PRNG 生成的随机数的 pipe 一个 stream 放入 Dieharder 随机性测试
python generator.py | dieharder -a -g 200
如果generator.py
是包含 BBS 伪随机数生成器的脚本。 如果f
是 BBS 伪随机生成器,并且currx
是生成器生成的下一个值,我将一个连续的随机数 stream 输送到 Dieharder 中,如下所示(在每次迭代时更新currx
)。
while True:
currx = f(currx)
sys.stdout.buffer.write(struct.pack('>I', currx))
其中currx
是一个int
。 目前,生成器完全失败了所有随机性测试:
test_name |ntup| tsamples |psamples| p-value |Assessment
#====================================================================#
diehard_birthdays| 0| 100| 100|0.00000000| FAILED
这没有任何意义,因为 Blum Blum Shub 非常好,当我通过不同的随机数测试器(如 ENT)时,它完美地通过了所有测试。 这可能意味着我错误地将数据输送到 Dieharder。 谁能帮我确定我的代码可能有什么问题?
Dieharder 手册给出了
原始二进制输入读取指定数据 stream 的 32 位增量。 stdin_input_raw 接受来自原始二进制 stream 的 pipe。
但是据我所知,我的实现满足了这一点。 我哪里错了?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.