Comment générer un nombre aléatoire à 9 chiffres en Java? [dupliquer]
Duplicata Possible:
Générer un UUID en Java
J'ai besoin de générer un code unique à 9 chiffres comme ceux utilisés au dos des produits pour les identifier.
Les codes ne doivent pas se répéter et ils ne doivent pas avoir de corrélation entre les nombres. Et aussi le code devrait être tous les entiers.
Je dois les générer en utilisant java et les insérer simultanément dans la base de données.
4 answers
Je sais que faire cela est un peu étrange, mais je pense que vous pouvez avoir un numéro unique à 9 chiffres avec presque aucune relation les uns avec les autres.....
Demander u demandé there should have no correlation between the numbers
public class NumberGen {
public static void main(String[] args) {
long timeSeed = System.nanoTime(); // to get the current date time value
double randSeed = Math.random() * 1000; // random number generation
long midSeed = (long) (timeSeed * randSeed); // mixing up the time and
// rand number.
// variable timeSeed
// will be unique
// variable rand will
// ensure no relation
// between the numbers
String s = midSeed + "";
String subStr = s.substring(0, 9);
int finalSeed = Integer.parseInt(subStr); // integer value
System.out.println(finalSeed);
}
}
Générez un nombre aléatoire à 9 chiffres et comparez-le à une base de données pour l'unicité.
100000000 + random.nextInt(900000000)
Ou
String.format("%09d", random.nextInt(1000000000))
int noToCreate = 1_000; // the number of numbers you need
Set<Integer> randomNumbers = new HashSet<>(noToCreate);
while (randomNumbers.size() < noToCreate) {
// number is only added if it does not exist
randomNumbers.add(ThreadLocalRandom.current().nextInt(100_000_000, 1_000_000_000));
}
Utilisez la méthode randomNumeric
de Commons Lang:
Néanmoins, vous devrez vérifier l'unicité de votre base de données.