如何在Java中生成随机的9位数字?

时间:2012-09-30 07:41:38

标签: java random cryptography

  

可能重复:
  Generate UUID in Java

我需要生成一个9位数的唯一代码,就像产品背面用来识别它们一样。

代码应该不重复,它们之间应该没有相关性。而且代码应该都是整数。

我需要使用java生成它们并同时将它们插入到数据库中。

4 个答案:

答案 0 :(得分:4)

生成一个9位数的随机数,并针对数据库查找唯一性。

100000000 + random.nextInt(900000000)

String.format("%09d", random.nextInt(1000000000))

答案 1 :(得分:1)

使用Commons Lang的randomNumeric方法:

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

但是,您必须检查数据库的唯一性。

答案 2 :(得分:0)

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

答案 3 :(得分:-1)

我知道这样做有点奇怪,但我仍然认为你可以拥有独特的9位数字,几乎没有任何关系......

问你要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);
    }

}