当前位置:  开发笔记 > 编程语言 > 正文

具有相同输出的伪随机发生器

如何解决《具有相同输出的伪随机发生器》经验,为你挑选了1个好方法。

我在http://auto.howstuffworks.com/remote-entry2.htm上看到了一篇关于汽车远程录入系统的文章.在第三篇文章中,作者说,

发送器和接收器都使用相同的伪随机数发生器.当发送器发送一个40位代码时,它使用伪随机数发生器来选择一个新代码,它存储在内存中.另一方面,当接收器接收到有效代码时,它使用相同的伪随机数生成器来选择新的代码.以这种方式,发射器和接收器是同步的.接收器只有在收到预期的代码时才会打开门.

是否可以让两个PRNG函数同时生成相同的随机数?



1> Erik Forbes..:

在PRNG函数中,函数的输出取决于"种子"值,使得在给定相同种子值的连续调用中将提供相同的输出.所以,是的.

一个例子(使用C#)将是这样的:

// Provide the same seed value for both generators:
System.Random r1 = new System.Random(1);
System.Random r2 = new System.Random(1);

// Will output 'True'
Console.WriteLine(r1.Next() == r2.Next());

这当然都取决于随机数生成器使用某种确定性公式来生成其值.如果你使用一个所谓的'真随机'数字生成器,它在生成中使用熵或噪声的属性,那么在给定一些输入的情况下生成相同的值将非常困难,除非你能够复制熵状态为两者都调用了函数 - 这当然会破坏使用这种生成器的目的......

在远程无钥匙进入系统的情况下,他们很可能使用确定性的PRNG功能以便利用该功能.有许多IC提供这种功能来产生电子电路的随机数.

编辑:根据要求,这里是一个非确定性随机数发生器的例子,它不依赖于指定的种子值:量子随机数发生器.当然,正如自由空间在评论中指出的那样,这不是伪随机数生成器,因为它生成真正的随机数.

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有