使用python的dieharder的原始二进制流

时间:2019-03-22 19:00:28

标签: python

我正在尝试将python数字生成器与dieharder结合使用,我发现可以在Linux中使用管道来完成

python3 generator.py | dieharder -a -g 200

-g 200表示我将使用stdin_input_raw

这是顽固手册的规范:

Raw binary input reads 32 bit increments of the specified data 
stream. stdin_input_raw accepts a pipe from a raw binary stream.

现在我使用随机生成器创建了一些python代码:

while True:
    sys.stdout.write("{0:b}".format(random.randint(0, 256)))

但是我认为它不能按预期工作,因为上面的第一次测试的终端命令的结果是:

     test_name   |ntup| tsamples |psamples|  p-value |Assessment 
#====================================================================#
diehard_birthdays|   0|       100|     100|0.00000000|  FAILED  

在执行命令时

cat /dev/urandom | dieharder -a -g 200

是:

     test_name   |ntup| tsamples |psamples|  p-value |Assessment
#====================================================================#
diehard_birthdays|   0|       100|     100|0.92477826|  PASSED  

我怀疑我生成raw input stream的代码不正确,如何在python中创建此流?

解决方案:

while True:
    sys.stdout.buffer.write(struct.pack('>I', random.randint(0, 2**32)))

0 个答案:

没有答案