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

时间:2014-11-04 19:32:45

标签: reverse prng

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

2 个答案:

答案 0 :(得分:3)

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

对于一般背景,这里有一些用于反转线性同余生成器的资源: Reversible pseudo-random sequence generator

pseudo random distribution which guarantees all possible permutations of value sequence - C++

这里有一些反转mersenne twister: http://www.randombit.net/bitbashing/2009/07/21/inverting_mt19937_tempering.html http://b10l.com/reversing-the-mersenne-twister-rng-temper-function/

答案 1 :(得分:1)

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

你必须知道发电机的细节。对于基于计数器的PRNG,解码线性同余生成器将不同于基于计数器的PRNG,这与Mersenne扭转器不同,后者将与Fibonacci生成器不同。另外,您可能需要知道发电机的参数。如果你拥有所有这些并且生成数字的等式是可逆的,那么它是可能的。至于如何,这实际上取决于PRNG。