2012-09-30 96 views
2

可能重複:
Generate UUID in Java如何在Java中生成一個隨機的9位數字?

我需要生成類似於在產品背面用來標識它們的那些一個9位數的唯一代碼。

這些代碼應該是不重複的,它們在數字之間應該沒有關聯。代碼也應該是所有整數。

我需要使用java生成它們,同時將它們插入到數據庫中。

+6

呃......如果你考慮條形碼的數字,這些數字並不完全是隨機的。 –

回答

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

} 
+2

數字之間會有很強的相關性。他們與他們的時間聯繫在一起。 –

+3

這並不能保證唯一性。 – Ishtar

+0

SO你有什麼建議? – haedes

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

請注意,數字格式中的下劃線是Java 1.7以來的一個功能。較舊的來源級別將不起作用。 –

+0

-1不使用安全的隨機函數 –

+0

@owlstead的要求是不使用安全的隨機函數,所以我沒有使用它,我沒有看到-1 – s106mo

4

生成一個9位數的隨機數並在數據庫中查找唯一性。

100000000 + random.nextInt(900000000) 

String.format("%09d", random.nextInt(1000000000)) 
相關問題