伪随机找一个对一个int32-> INT32功能(Pseudo-random-looking

2019-07-22 04:32发布

我要寻找一个int32-> INT32函数是

  • 双射(一到一一对应)
  • 便宜的在一个方向上至少计算
  • 变换的递增序列0,1,2,3,...成看起来像一个良好的伪随机序列的序列(〜一半比特翻转时由少数参数的变化,没有明显的图案)

Answer 1:

由大量奇数和异或与不同的一个相乘。

双射:奇数有两种乘法逆模权力,所以乘法通过逆乘法撤消。 和XOR,当然,另一个异或撤消。

这基本上是线性同余伪随机数生成器是如何工作的。



Answer 2:

可能就是因为这个任务矫枉过正,但你有没有考虑应用任何加密的伪随机置换或其他原语来自分组密码 。 例如,它可以使用DES与计数器模式已知键来完成:

younumber xor (des (key, number counter))


文章来源: Pseudo-random-looking one-to-one int32->int32 function