Java: générer Aléatoirement des noms distincts
J'ai besoin de générer de 10 000 identifiants uniques en Java. Les identifiants doivent être un mélange de chiffres et de lettres et de moins de 10 caractères chacune. Des idées? Construit dans les bibliothèques serait un petit plus.
Vous devez vous connecter pour publier un commentaire.
Je réponds très en retard, mais c'est ce qui est vraiment utile pour le lecteur de nouvelles.
C'est un moyen très simple et efficace pour obtenir aléatoire des noms VALIDES.
Pour ce faire, ajouter le repository maven dans POM.xml
Et ensuite utiliser le Faussaire classe comme ci-dessous dans votre code Java
Essayez d'imprimer le résultat en utilisant la norme
System.out.println();
Pour plus de référence Faker Lib
Pourquoi ne pas utiliser java.util.UUID?
Il est garanti pour générer des identifiants uniques, et c'est en tant que norme qu'il obtient :-).
Si vous permettez Apache Commons lang...
Vous pouvez essayer de prendre du hachage md5 heure actuelle et vous obtiendrez "aléatoire" identifiant en tant que mélange de chiffres et de lettres
Random random = new Random(); for (int i=0; i<10000; i++) { System.out.println(Long.toHexString(random.nextLong())); }
La plus simple et la plus rapide consiste à générer permutations d'une certaine chaîne de caractères. Aussi longtemps que la chaîne est assez longue, vous pouvez facilement avoir de 10.000 permutations. La bonne chose de la génération de permutation est que vous n'avez pas à vous soucier de duplications. Si une chaîne contient tous les caractères différents, il peut générer des n! permutations (n est la longueur de la chaîne). Ainsi, une chaîne de 8 caractères différents peuvent générer 40,320 différentes permutations.
Il y a beaucoup de code en ligne pour générer des permutations d'une chaîne, comme celle de la http://introcs.cs.princeton.edu/23recursion/Permutations.java.html.
Si vous voulez être plus aléatoire, vous pouvez utiliser différentes chaînes, comme la semence, comme "abcde123", "efgh456", etc..
Vous pouvez essayer de
Le long de la constante est juste assez pour les 10 chiffres, la base de 36 numéros.
J'ai eu le même problème, mais j'ai besoin d'un arbitrairement long de la chaîne. Je suis venu avec ce one-liner, pas de bibliothèque externe nécessaire, qui vous donnera 10 caractères:
La longueur peut être changé, vous avez besoin sur 5 bits par caractère. De ce fait, c'est de filtrer et de limiter la longueur comme suit (juste en lettres minuscules, et la taille de 10):
Inconvénient: il est un peu lent.