Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Random 为什么16位LFSR能通过所有顽固的测试?_Random_Bluespec - Fatal编程技术网

Random 为什么16位LFSR能通过所有顽固的测试?

Random 为什么16位LFSR能通过所有顽固的测试?,random,bluespec,Random,Bluespec,我在硬件上实现了LFSR。它基于维基百科页面上的LFSR。它具有相同的输出 它通过了Diehard的所有测试,但是,如果我画出这些对,我得到的不是2D中非常随机的线 那么,我怎样才能有一个强有力的统计测试来证明这个PRNG是不理想的呢 已解决: 我必须使用comand dieharder -a -f exemple_LSRF_BS_1_DH.txt -g 202 然后在输出文件中添加一个头,我有我的数字。根据绘图的外观,我猜您的随机比特流在每个周期后发射整个寄存器,而不是每个周期仅发射一位。

我在硬件上实现了LFSR。它基于维基百科页面上的LFSR。它具有相同的输出

它通过了Diehard的所有测试,但是,如果我画出这些对,我得到的不是2D中非常随机的线

那么,我怎样才能有一个强有力的统计测试来证明这个PRNG是不理想的呢

已解决:

我必须使用comand

dieharder -a -f exemple_LSRF_BS_1_DH.txt -g 202

然后在输出文件中添加一个头,我有我的数字。

根据绘图的外观,我猜您的随机比特流在每个周期后发射整个寄存器,而不是每个周期仅发射一位。这意味着当被视为16位字时,
x_(n+1)
要么是
x_n/2
要么是
x_n/2+32768
。这表现为渐变为0.5(或2.0,取决于顺序和/或换档方向)的两条对角线

LFSR的正常使用将每周期发射一位,或每
n
周期发射所有
n
位。这确实会产生一些负面的特性,但它们不像你所展示的那么明显

至于你考试失败的原因;我想你的测试设置一定有缺陷。我修改了来自的代码,在stdout上的每个周期发出16位状态,并将其传输到
dieharder-a-g200
,在前五次测试中它立即失败。这是人们所期望的;甚至
hextump-C
也显示出明显的可见模式

修改代码以每16个周期发出16位状态,
hextump-C
看起来更随机,但Diehard仍然失败

可能您没有将生成器源指定为Diehard,因此它使用了默认的内部生成器。您可以在输出的第五行确认这一点:

   rng_name    |rands/second|   Seed   |
        mt19937|  1.42e+08  |1473327481|

即便如此,如果您想对生成器进行更彻底的测试,请看一看。

根据绘图的外观,我猜您的随机位流在每个周期后都会发出整个寄存器,而不是每个周期只发出一位。这意味着当被视为16位字时,
x_(n+1)
要么是
x_n/2
要么是
x_n/2+32768
。这表现为渐变为0.5(或2.0,取决于顺序和/或换档方向)的两条对角线

LFSR的正常使用将每周期发射一位,或每
n
周期发射所有
n
位。这确实会产生一些负面的特性,但它们不像你所展示的那么明显

至于你考试失败的原因;我想你的测试设置一定有缺陷。我修改了来自的代码,在stdout上的每个周期发出16位状态,并将其传输到
dieharder-a-g200
,在前五次测试中它立即失败。这是人们所期望的;甚至
hextump-C
也显示出明显的可见模式

修改代码以每16个周期发出16位状态,
hextump-C
看起来更随机,但Diehard仍然失败

可能您没有将生成器源指定为Diehard,因此它使用了默认的内部生成器。您可以在输出的第五行确认这一点:

   rng_name    |rands/second|   Seed   |
        mt19937|  1.42e+08  |1473327481|

即便如此,如果您想对发电机进行更彻底的测试,请查看。

频谱测试应该能够捕捉到这种行为。迪哈德将其列为未来可能的补充。我绘制的图像是光谱测试(我认为)。在我看来,它看起来像一个纯粹的两两图。提到一些常见的PRNG在dims>=3的光谱测试中失败。你的图只有2D。是的,这是一对2D对(x=席,y= x(i + 1))。光谱测试应该捕捉到这种行为。迪哈德将其列为未来可能的补充。我绘制的图像是光谱测试(我认为)。在我看来,它看起来像一个纯粹的两两图。提到一些常见的PRNG在dims>=3的光谱测试中失败。x(i+1))这是我用的是我的头,是我用的是:65535号:16—----------------------------------------------TXT-AIT似乎是对的。你的情节只有2D。是的,这是一对2D对(x=席,y=)。这是我接到的电话。rng|U name | filename | rands/second | mt19937 | example.txt | 1.65e+08 |这是我使用的头文件|============================================================生成器LFSR seed=1======================================================它还使用了NUMB65D:类型和计数:535:dieharder-f example.txt-aIt似乎你是对的。这是我接到的电话。rng|u name | filename | rands/second | mt19937 | example.txt | 1.65e+08|