一尘不染

伪随机的一对一int32-> int32函数

algorithm

我正在寻找一个int32-> int32函数

  • 双射(一对一对应)
  • 至少在一个方向上计算便宜
  • 将递增的序列0、1、2、3,…转换为看起来像一个良好的伪随机序列的序列(当参数改变很小的数量(没有明显的模式)时,会翻转半位)

阅读 262

收藏
2020-07-28

共1个答案

一尘不染

乘以一个大的奇数,然后将异或乘以另一个。

Bijection:奇数具有2的乘法逆模幂,因此乘以反即可撤消乘法。当然,xor被另一个xor撤消。

基本上,这就是线性同余伪随机数生成器的工作方式。

2020-07-28