Mysql
 sql >> Base de données >  >> RDS >> Mysql

Algorithme pour générer un nombre aléatoire

Non, votre algorithme n'est pas évolutif. Ce que j'ai fait auparavant, c'est d'émettre des nombres en série (+1 à chaque fois), puis de les faire passer par une opération XOR pour mélanger les bits, me donnant ainsi des nombres apparemment aléatoires. Bien sûr, ils ne sont pas vraiment aléatoires, mais ils en ont l'air aux yeux des utilisateurs.

[Modifier] Informations complémentaires

La logique de cet algorithme est la suivante :vous utilisez une séquence connue pour générer des nombres uniques, puis vous les manipulez de manière déterministe, de sorte qu'ils ne semblent plus en série. La solution générale consiste à utiliser une forme de cryptage, qui dans mon cas était une bascule XOR, car elle est aussi rapide que possible et elle garantit que les nombres ne se heurteront jamais.

Cependant, vous pouvez utiliser d'autres formes de cryptage, si vous voulez préférer des nombres encore plus aléatoires à la vitesse (disons que vous n'avez pas besoin de générer plusieurs identifiants à la fois). Maintenant, le point important dans le choix d'un algorithme de chiffrement est "la garantie que les chiffres ne se heurteront jamais". Et un moyen de prouver si un algorithme de chiffrement peut remplir cette garantie est de vérifier si le nombre d'origine et le résultat du chiffrement ont le même nombre de bits, et que l'algorithme est réversible (bijection).

[Merci à Adam Liss &CésarB pour développer la solution]