Pseudo-random-looking one-to-one int32->int32 function
algorithm, bijection, integer, random
Solution
Multiply by a large odd number and xor with a different one.
Bijection: odd numbers have a multiplicative inverse modulo powers of two, so the multiplication is undone by a multiplication by the inverse. And xor is, of course, undone by another xor.
This is basically how the linear congruence pseudo random number generator works.
Problem
I am looking for a int32->int32 function that is - bijection (one-to-one correspondence) - cheap to calculate at least in one direction - transforms the increasing sequence 0, 1, 2, 3, ... into a sequence looking like a good pseudo-random sequence (~ half bits flip when argument changes by a small number, no obvious patterns)