我在http://auto.howstuffworks.com/remote- entry2.htm上遇到了有关汽车远程进入系统的文章。作者说,在第三个项目符号中,
发送器和接收器都使用相同的伪随机数生成器。当发送器发送40位代码时,它使用伪随机数生成器选择一个新代码,并将其存储在内存中。另一方面,当接收器收到有效代码时,它使用相同的伪随机数生成器来选择一个新的。这样,发送器和接收器被同步。接收器仅在收到期望的代码后才打开门。
是否可以有两个PRNG函数同时产生相同的随机数?
在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提供这种功能以产生电子电路的随机数。
编辑:根据要求,这是一个不确定性随机数生成器的示例,该生成器不依赖于指定的种子值:量子随机数生成器。当然,正如自由空间在注释中指出的那样,这不是伪随机数生成器,因为它会生成真正的随机数。