2013-03-20 19 views
7

我要尋找一個int32-> INT32函數是僞隨機找一個對一個int32-> INT32功能

  • 雙射(一到一一對應)
  • 便宜至少在一個方向上計算
  • 將遞增序列0,1,2,3,...轉換成看起來像一個好的僞隨機序列的序列(當參數變化很小時,〜半位翻轉,沒有明顯的圖案)
+0

您是否嘗試過任何操作? – 2013-03-20 20:26:28

+2

相似的問題:[混淆身份證](http://stackoverflow.com/q/8554286/1009831)。 – 2013-03-20 20:27:22

+0

廉價是「便宜」?任何合理的分組密碼都應該提供你的僞隨機/位翻轉的願望。 – 2013-03-20 20:28:02

回答

10

乘以一個lar ge奇數和xor與另一個不同。雙射:奇數具有乘法逆模2的冪,因此乘法通過乘以逆來消除。 xor當然是由另一個xor撤消的。

這基本上是線性同餘僞隨機數發生器是如何工作的。

3

可能是這項任務的矯枉過正,但你有沒有考慮應用任何加密pseudo random permutation或其他原始來自block ciphers。例如,它可以在計數器模式下使用des與已知密鑰完成:

younumber xor (des (key, number counter))