sql >> Base de Datos >  >> RDS >> Mysql

Algoritmo para generar un número aleatorio

No, su algoritmo no es escalable. Lo que he hecho antes es emitir números en serie (+1 cada vez) y luego pasarlos a través de una operación XOR para mezclar los bits, lo que me da números aparentemente aleatorios. Por supuesto, no son realmente aleatorios, pero lo parecen a los ojos de los usuarios.

[Editar] Información adicional

La lógica de este algoritmo es así:usa una secuencia conocida para generar números únicos y luego los manipula de manera determinista, para que ya no se vean en serie. La solución general es usar alguna forma de cifrado, que en mi caso fue un flip-flop XOR, porque es lo más rápido posible y cumple con la garantía de que los números nunca colisionarán.

Sin embargo, puede usar otras formas de encriptación, si desea preferir números aún más aleatorios, sobre la velocidad (digamos que no necesita generar muchos ID a la vez). Ahora, el punto importante al elegir un algoritmo de encriptación es "la garantía de que los números nunca colisionarán". Y una forma de probar si un algoritmo de encriptación puede cumplir con esta garantía es comprobar si tanto el número original como el resultado de la encriptación tienen el mismo número de bits, y que el algoritmo es reversible (biyección).

[Gracias a Adam Liss &César B para ampliar la solución]