类似于反向随机数发生器的东西

时间:2014-05-10 06:34:40

标签: algorithm montecarlo prng lossy-compression

我真的不知道这个问题的名称是什么,但它有点像有损压缩,我的英语不好,但我会尝试尽可能多地描述它。

假设我有来自未知来源的未分类的唯一数字列表,长度通常在255到512之间,范围从0到512.
我想知道是否有某种算法可以读取数据并返回类似种子号的内容,我可以用它来生成一个接近原始但有一定程度错误的列表。

例如

  • 原始列表

    {5, 13, 25, 33, 3, 10}
    
  • 重新生成列表

    {4, 10, 30, 30, 5, 5} or {8, 20, 20, 35, 5, 9} //and so on
    

这个问题是否有名称,是否存在可以执行我刚才描述的算法? 它与蒙特卡罗方法是一样的,因为根据我的理解,它不是。

是否可以使用有损压缩中使用的一些技术来获得这种近似值?

我试图解决这个问题的方法是使用一个简单的16位RNG并强制所有可能的值将它们与原始列表进行比较并选择具有最小差异的值,但我认为这样做是相当的愚蠢而低效。

1 个答案:

答案 0 :(得分:2)

这确实是有损压缩。

您没有告诉我们列表中值的范围。从您给出的样本中我们可以推断它们每个至少计数6位(0到63)。总的来说,你有0到3072位压缩。

如果这些序列没有特殊属性并且看起来是随机的,我怀疑是否有任何方法可以实现显着的压缩。认为从32位种子匹配任意序列的概率是2 ^ 32.2 ^( - 3072)= 7.10 ^( - 916),即小于无穷小。如果每个值允许10%的误差,则匹配的概率为2 ^ 32.0.1 ^ 512 = 4.10 ^( - 503)。

以12.5%的精度压缩的一个简单方法是去除每个值的三个LSB,从而节省50%(1536位),但我怀疑这是你正在寻找的。

测量序列http://en.wikipedia.org/wiki/Entropy_(information_theory)的熵和/或值之间可能的相关性将是有用的。这可以通过绘制所有(V,Vi + 1)对或(Vi,Vi + 1,Vi + 2)三元组并寻找模式来完成。