Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Algoritmo para gerar um número aleatório


Não, seu algoritmo não é escalável. O que eu fiz antes é emitir números em série (+1 a cada vez) e depois passá-los por uma operação XOR para misturar os bits, dando-me números aparentemente aleatórios. Claro que eles não são realmente aleatórios, mas parecem assim aos olhos dos usuários.

[Editar] Informação adicional

A lógica desse algoritmo é assim você usa uma sequência conhecida para gerar números únicos e então você os manipula deterministicamente, para que eles não pareçam mais seriais. A solução geral é usar alguma forma de criptografia, que no meu caso foi um flipflop XOR, porque é o mais rápido possível e cumpre a garantia de que os números nunca colidirão.

No entanto, você pode usar outras formas de criptografia, se preferir números ainda mais aleatórios, em vez de velocidade (digamos que você não precise gerar muitos IDs de cada vez). Agora, o ponto importante na escolha de um algoritmo de criptografia é "a garantia de que os números nunca colidirão". E uma forma de provar se um algoritmo de criptografia pode cumprir essa garantia é verificar se tanto o número original quanto o resultado da criptografia possuem o mesmo número de bits, e se o algoritmo é reversível (bijeção).

[Graças a Adam Liss &CésarB para expandir a solução]