【发布时间】:2015-12-28 23:08:15
【问题描述】:
我有一组非常大的值 (0-300000^700),我想找到一种算法,它可以在同一组中双射地分配一个唯一值。
这相当于置换,但由于明显的内存问题,必须“即时”完成。并且算法需要在某些时候反转。
这个问题和“babel库”中的这个问题类似:http://www.fromquarkstoquasars.com/meet-the-digital-library-of-babel-a-complete-combination-of-every-possible-combination-of-letters-ever/
使用 LCG,使用 Hull-Dobell 定理设置参数以确保不重复。种子用作初始值。我没有得到的是逆是如何可能的(即从输出中获取种子),因为我认为这需要蛮力。
【问题讨论】:
-
您可能会在其他 SO 交换(可能是 CS 或数学)中取得更大的成功。这里的许多人不认为依赖于深度数学的算法在 SO 章程中……正如您以 2 票结束所见。
-
我认为这种情况的一些变体在stackoverflow上反复出现。参见例如stackoverflow.com/questions/32182120/…
标签: algorithm random permutation lcg