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.

Author: Community, 2012-09-30

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);
    }

}
 -1
Author: Kumar Vivek Mitra, 2012-09-30 08:35:33

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))
 4
Author: Praveen, 2012-09-30 08:09:50
        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));
        }
 0
Author: s106mo, 2012-09-30 07:58:38

Utilisez la méthode randomNumeric de Commons Lang:

Http://commons.apache.org/lang/api-2.6/org/apache/commons/lang/RandomStringUtils.html#randomNumeric(int)

Néanmoins, vous devrez vérifier l'unicité de votre base de données.

 0
Author: Isaac, 2012-09-30 08:53:57