是否可以反转伪随机数发生器?

Cen*_*oth 9 reverse prng

是否可以反转伪随机数发生器?例如,获取生成数字的数组并获取原始种子.如果是这样,将如何实施?

Jon*_*ile 5

这是绝对可能的 - 您只需要创建一个适合您目的的 PRNG。这完全取决于您需要完成什么 - 如果您更详细地描述您的情况,我很乐意提供更多建议。

对于一般背景,这里有一些用于反转线性同余生成器的资源: 可逆伪随机序列生成器

伪随机分布,保证值序列的所有可能排列 - C++

这里有一些用于反转梅森扭曲器:http : //www.randombit.net/bitbashing/2009/07/21/inverting_mt19937_tempering.html http://b10l.com/reversing-the-mersenne-twister-rng-temper -功能/


小智 0

一般来说,没有。如果你有完整的数字数组,对于大多数生成器来说应该是可能的。如果你没有所有的数字或者不知道你有哪些数字(你有第 12 个还是第 300 个?),你根本无法弄清楚,因为你不知道在哪里停止。

您必须了解生成器的详细信息。解码线性同余生成器与基于计数器的 PRNG 的解码不同,后者与梅森扭曲器不同,而梅森扭曲器与斐波那契生成器也不同。另外,您可能需要了解发电机的参数。如果您拥有所有这些并且生成数字的方程是可逆的,那么这是可能的。至于如何,这实际上取决于 PRNG。