10 假设我知道线性同余生成器生成了一个随机数序列。那是, xn+1=(aXn+c)modmxn+1=(aXn+c)modm 如果给了我整个周期(或至少是一个较大的连续子序列),我该如何重建产生该序列的参数和?我正在寻找一种通用方法,如果已知伪随机数生成器,该方法将能够确定初始参数。a,c,ma,c,mx0x0 random-number-generation inverse-problem — 保罗 source 确切知道什么?从连续的子序列中,您无法确定序列从开始的位置,除非按顺序对项目进行索引。如果是已知的,则很容易发现和。x0x0mmaacc — hardmath 2012年
10 参见论文《如何破解线性同余生成器》,Haldir(“逆向工程团队”,2004年12月): 在本文中,我将介绍一种方法,该方法将解决具有六个或更多连续数量PRNG输出的LCG的所有值,包括模量。 本文包括用Victor Shoup的NTL进行扩展的精确算术,用C编写的“概念证明”源代码。 — 坚硬 source 那是一篇很棒的论文!:)您知道一种更通用的方法可以应用于其他随机数生成器,而不仅是线性同余的吗? — 保罗 @Paul:当然可以从足够的输出数据中找到可以轻松“解析”其参数的RNG(逆问题),但似乎RNG越好(输出的外观越随机),逆就越困难问题将会是。LCG案例的解决方案与众所周知的某些维数聚类效果有关,这会使生成的值对不均匀地分布。有关更多信息,请参见通过变换线性生成的序列来设计具有加密功能的强生成器 — hardmath 2012年