Génération de nombres aléatoires unique de 12 chiffres en Java
je travaille sur une application où nous avons besoin de générer un certain nombre unique et pratiquement il n'y a pas de prédéfinis, les restrictions a l'utilisation de java UUD générateur et fonctionnait bien.
Maintenant, on donne de nouvelles exigences pour générer 12 chiffres nombre aléatoire unique.
Quelqu'un peut-il m'indiquer quelques bonnes way/algorithme pour atteindre ce que je ne peux pas voir aucune possibilité dans l'UUID nombre généré.
Merci d'avance
source d'informationauteur Umesh Awasthi
Vous devez vous connecter pour publier un commentaire.
Générer chaque chiffre en appelant
random.nextInt
. Pour l'unicité, vous pouvez garder une trace de l'aléatoire de numéros que vous avez utilisé jusqu'à présent en les gardant dans un ensemble et vérifier si l'ensemble contient le numéro de générer à chaque fois.Mais il ya des risques de collision
Pourquoi ne pas utiliser la séquence? À partir de 100,000,000,000 à 999,999,999,999? garder une trace de la dernière génération nombre.
Edit: merci à bence olahj'ai fixé un voyeur erreur
Amélioré vérifié solution à l'aide de StringBuilder():
J'ai eu une demande similaire dernièrement et est venu avec cette:
Il utilise l'encoder en Base64 de apache commons que j'ai eu dans mon projet de toute façon. Peut-être que vous voulez remplacer par quelque chose de simple, mais sinon, il fait le travail.
Vous pouvez essayer comme ça.C'est la génération de nombre aléatoire pour 12 chiffres.vous devez mentionner les plages.
Vous pourriez essayer d'obtenir le Uuid de LSB et MSB moitiés en tant que longs, et de les convertir en nombre.
Je considère comme un simple hachage d'un Système.nanoTime() en supposant que vous n'avez pas l'esprit de l'1 de 1 milliard de chance de collision de hachage.