2014-11-04 404 views

回答

6

Wikipedia says

4版的UUID使用計劃只對隨機數依賴。該算法設置版本號(4位)以及兩個保留位。所有其他位(剩餘的122位)使用隨機或僞隨機數據源進行設置。

版4的UUID具有形式XXXXXXXXXXXX-4XXX-YXXX-XXXXXXXXXXXX其中x是任意十六進制數字,y是8之一,9,A,或B

因此的第一比特最不重要的一半總是1,使其成爲負數。

+0

感謝。這對我有意義。順便說一句,關於如何產生一個獨特的長期價值的任何建議? – Kai 2014-11-04 23:59:00

+0

@Kai這是一個單獨的問題(以及之前在此網站上提出的問題)。 – yshavit 2014-11-05 00:00:58

+0

SecureRandom#nextLong如何? – Thilo 2014-11-05 00:02:00

1

這也可能是有用的,以展示從getLeastSignificantBits()什麼期望:

/** 
* @see UUID#getLeastSignificantBits() 
*/ 
public void test_getLeastSignificantBits() { 
    UUID uuid = new UUID(0, 0); 
    assertEquals(0, uuid.getLeastSignificantBits()); 
    uuid = new UUID(0, Long.MIN_VALUE); 
    assertEquals(Long.MIN_VALUE, uuid.getLeastSignificantBits()); 
    uuid = new UUID(0, Long.MAX_VALUE); 
    assertEquals(Long.MAX_VALUE, uuid.getLeastSignificantBits()); 
} 

source