2014-06-26 43 views
0

如果我創建了兩個GUID,那麼我明白它們將是唯一的,但它是依賴於時間的一部分。我想創建一個完全隨機的隨機字符串。如果我創建GUID,那麼是否有辦法檢查一個GUID是否在另一個GUID之後創建?

也許如果有人知道如何創建一個GUID,這將有助於我理解。

+0

http://en.wikipedia.org/wiki/Globally_unique_identifier#Algorithm –

+0

這裏有一個相關的問題:http://stackoverflow.com/questions/1752004/sequential-guid-generator-c-sharp –

+0

the調用UuidCreate的c#實現調用CoCreateGuid http://msdn.microsoft.com/en-US/library/windows/desktop/aa379205.aspx 「UuidCreate函數生成一個UUID,該UUID不能被跟蹤到以太網地址它也不能與在同一臺計算機上創建的其他UUID相關聯。「 – Jay

回答

2

如果我創建的GUID那麼有沒有一種方式,如果一個GUID被陸續創建我可以檢查?

不。有很多方法可以製作GUID。 GUID中沒有內容對時間進行編碼。實施不當的GUID生成器可能會對生成時間進行編碼,但通常情況下,如果給定GUID,則不知道用於生成它的算法。

我想創建一個完全隨機的隨機字符串。

使用高質量的隨機數發生器。雖然有人警告說,它很難在普通電腦上找到真正的隨機數發生器。通常最好的辦法是使用僞隨機數生成器。

+0

@RussellHorwood * Simply不存在*。取決於你的定義我想。我正在考慮這裏描述的那種RNG:http://en.wikipedia.org/wiki/Random_number_generation#.22True.22_random_numbers_vs._pseudo-random_numbers –

+0

@RussellHorwood確定性計算產生PRNG。但真正的RNG確實存在。他們在通用計算機上不太實際。這就是我的意思。我想我正試圖向提問者指出,PRNG不會完全滿足對「完全隨機」的渴望。 –

+0

這些都不重要。 –

0

- Wikipedia的答案這顯然 -

的GUID通常存儲爲128位的值,並且通常顯示 爲32個十六進制數字與由連字符分隔基團,如 {21EC2020-3AEA -4069-A2DD-08002B30309D}。從隨機 數字生成的GUID有時包含6個固定位,它們是隨機的,隨機比特是122 ;唯一此類GUID的總數爲2122 (約5.3×1036)。這個數字非常大,以至於隨機生成兩次相同數字的概率爲 可以忽略不計;然而,其他GUID版本具有不同的唯一性屬性和 概率,範圍從保證的唯一性到可能的非唯一性。爲簡單起見,假設一致概率,如果每個人在2014年擁有6億個GUID,那麼一個重複的概率將約爲50%。

這裏是C#源,如果你想有一個更內在的理解: http://referencesource.microsoft.com/#mscorlib/system/guid.cs

相關問題