7

私はint32->int32関数を探しています

  • 全単射(1対1対応)
  • 少なくとも一方向で計算するのは安い
  • 増加するシーケンス0、1、2、3、...を、適切な疑似乱数シーケンスのように見えるシーケンスに変換します(引数が小さい数だけ変化すると、約半分のビットが反転します。明らかなパターンはありません)
4

2 に答える 2

10

大きな奇数とxorを別の数で乗算します。

全単射:奇数は2の乗法逆数モジュラ乗を持っているので、逆数による乗算によって乗算が元に戻されます。そしてもちろん、xorは別のxorによって元に戻されます。

これは基本的に、線形合同疑似乱数ジェネレーターの動作方法です。

于 2013-03-20T20:29:15.167 に答える
3

おそらくこのタスクにはやり過ぎですが、暗号疑似ランダム順列または他のプリミティブをブロック暗号から適用することを検討していますか?たとえば、カウンターモードで既知のキーを持つdesを使用して実行できます。

younumber xor (des (key, number counter))
于 2013-03-20T21:19:21.420 に答える