Existe um algoritmo que produz um embaralhamento eficiente de um uint32 em um uint32 diferente que resulta em um mapeamento 1:1 quando recebe uma semente aleatória alterável?
Minha orientação inicial sobre isso é um algoritmo em que a semente expressa de alguma forma quais bits reorganizar no número (de modo que 0000 0101 se torne 0100 1000 com a semente [0->6, 2->3]), mas não tenho certeza de como gerar uma maneira de fazer esse embaralhamento de forma eficiente.
Algumas restrições:
- A produção do algoritmo para realizar o embaralhamento a partir da semente não precisa ser muito rápida
- Na verdade, executar o shuffle em um uint32 deve ser rápido
- Não deve haver repetições na saída para uma semente fornecida (um uint32 exclusivo produz um uint32 exclusivo)