Algorithm 伪随机一对一int32->;int32函数

Algorithm 伪随机一对一int32->;int32函数,algorithm,random,integer,bijection,Algorithm,Random,Integer,Bijection,我正在寻找一个int32->int32函数 双射(一对一对应) 至少在一个方向上计算起来很便宜 变换递增序列0、1、2、3。。。变成一个看起来像好的伪随机序列的序列(当参数变化很小时,大约半位翻转,没有明显的模式) 乘以一个大奇数,然后用另一个奇数进行异或运算 双射:奇数的乘法逆模幂为2,因此乘法是通过逆乘来撤消的。当然,xor被另一个xor撤销 这基本上是线性同余伪随机数发生器的工作原理。可能是对这个任务的过度处理,但是你是否考虑过应用任何密码或其他原语。例如,可在计数器模式下使用具有已知密

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

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

乘以一个大奇数,然后用另一个奇数进行异或运算

双射:奇数的乘法逆模幂为2,因此乘法是通过逆乘来撤消的。当然,xor被另一个xor撤销


这基本上是线性同余伪随机数发生器的工作原理。

可能是对这个任务的过度处理,但是你是否考虑过应用任何密码或其他原语。例如,可在计数器模式下使用具有已知密钥的des完成:

younumber xor (des (key, number counter))

你试过什么吗?类似的问题:“‘便宜’有多便宜?”?任何合理的分组密码都应该满足您的伪随机/位翻转需求。