创建一个具有相同域和范围的随机双射函数

时间:2018-01-11 11:17:54

标签: random bijection

创建一个具有相同域和范围的随机双射函数。 通过随机双射函数,我指的是使用随机算法(或至少是伪随机算法)将元素从域映射到范围的函数,而不是像x = y。域和范围可以是一个非常小的集合,有时像{1,2,3,4,5},所以配对函数将不起作用。 此外,计算资源是有限的,因此它应该是一个计算可行的函数。

编辑:我在问题中的意思是, 假设你有一个5个数字的列表A = {1,2,3,4,5}。现在你要做的是创建一个随机函数f,当应用于上面的集合时,给出一个包含相同上面数字的集合,但是具有足够高概率的不同顺序。就像我做了f(A)= B,那么B可能是{2,4,1,5,3}。因此,A至B maping是1-> 2,2-> 4,4-> 1,4-> 5和5-> 3。但是,如果我再次进行f(A),则此时的映射应该是另一个这样的随机化映射,即如果f(A)= C,则C可以是具有均匀相等概率的A的任何一种可能的排列。这可以通过计算第n个排列来容易地实现。但我怀疑的是,如果我想在给定的特定时间间隔内找出集合A中数字的映射,那么可以在恒定的时间和空间内完成。

1 个答案:

答案 0 :(得分:0)

嗯,古典Linear Congruential Generator如果满足Hull-Dobell定理则具有此属性。

例如,Knuth LCG(a = 6364136223846793005,c = 1442695040888963407)将1:1域[0 ... 2 64 )映射到co-domain [0 ... 2 64