2010-10-20 18 views
10

मान लें कि मैं एक गाइड को अपने एप्लिकेशन के असेंबली गाइड के रूप में सेट करना चाहता हूं। जैसा कि इंटरनेट से खोजा गया है, हम एक नया अद्वितीय मूल्य प्राप्त करने के लिए (new Guid()).Next() का उपयोग कर सकते हैं।यह सुनिश्चित करने के लिए कि एक जेनरेट किया गया guid वैश्विक रूप से अद्वितीय है?

मैं यह नहीं समझ सकता कि मेरे गाइड को दूसरों के खिलाफ अद्वितीय कैसे होना चाहिए? कृपया बताएं कि क्या आप जानते हैं कि कैसे करें।

+0

इससे मदद मिल सकती है: http://stackoverflow.com/questions/39771/is-a-guid-unique-100-of-the-time – Reza

उत्तर

6

यह नहीं है, लेकिन जिस तरह से इसे उत्पन्न किया गया है और जिस तरह से इसका प्रतिनिधित्व किया गया है, इस मीनियम में लगभग शून्य के समान GUID उत्पन्न करने की संभावना बनाता है।

देखें: Simple proof that GUID is not unique

3

http://en.wikipedia.org/wiki/Globally_unique_identifier से:

एल्गोरिथ्म

नई (V1) GUIDs पैदा करने के लिए OSF द्वारा निर्दिष्ट एल्गोरिथ्म में, उपयोगकर्ता के नेटवर्क कार्ड मैक पता GUID अंकों की पिछले समूह, के लिए एक आधार के रूप में प्रयोग किया जाता है जो इसका मतलब है, उदाहरण के लिए, कि एक दस्तावेज़ को उस कंप्यूटर पर वापस ट्रैक किया जा सकता है जिसने इसे बनाया है। मेलिसा कीड़े [2] के निर्माता को ढूंढते समय यह गोपनीयता छेद का उपयोग किया जाता था। अधिकांश अन्य अंक GUID उत्पन्न करते समय उस समय पर आधारित होते हैं।

वी 1 GUID जिसमें मैक पता और समय होता है, अंकों के तीसरे समूह की पहली स्थिति में अंक "1" द्वारा पहचाना जा सकता है, उदाहरण के लिए {2f1e4fc0-81fd-11da-9156-00036a0f876a}।

वी 4 GUID बाद के एल्गोरिदम का उपयोग करते हैं, जो एक छद्म-यादृच्छिक संख्या है। इन्हें एक ही स्थिति में "4" है, उदाहरण के लिए {38a52be4-9352-453e-af97-5c3b448652f0}। अधिक विशेष रूप से, 'डेटा 3' बिट पैटर्न पहले मामले में 0001xxxxxxxxxxxx होगा, और दूसरे में 0100xxxxxxxxxxxx होगा। WinAPI GUID जेनरेटर के क्रिप्टैनालिसिस से पता चलता है कि, चूंकि वी 4 GUID का अनुक्रम छद्म-यादृच्छिक है; आंतरिक राज्य के पूर्ण ज्ञान के बाद, पिछले और बाद के मूल्यों की भविष्यवाणी करना संभव है। [3]।

6

केवल गारंटी आप हैं, वे संभावना है कि आपकी तरफ है। 2^128 संभावित GUID और सृजन प्रक्रिया में कुछ चतुरता यह बहुत ही असंभव बनाता है कि आप कभी भी एक डुप्लिकेट देखेंगे।

ऐसा लगता है कि V4 विंडोज़ पर मानक GUID है। यदि वह पूरी तरह से छद्म-यादृच्छिक संख्या जनरेटर पर आधारित है, क्योंकि विकिपीडिया इंगित करता है, तो यह Birthday problem से प्रभावित होता है।

मैंने 128-बिट्स का उपयोग करके कई उदाहरण देखे हैं ताकि यह दिखाया जा सके कि डुप्लिकेट लगभग असंभव है। वे अक्सर दो चीजों को याद करते हैं। जन्मदिन की समस्या और एक वी 4 GUID वास्तव में 124 बिट्स है।

आपको डुप्लिकेट के 50% मौके तक पहुंचने के लिए 1/2+sqrt(1/4-2*2^124*ln(0,5)) ≈ 5.4*10^18 GUID की आवश्यकता है। यह अभी भी बहुत कुछ है, लेकिन 50% वह सौदा नहीं हो सकता है जिसे आप ढूंढ रहे हैं। मान लें कि आप डुप्लिकेट प्राप्त करने के लिए दस लाख में से एक बनना चाहते हैं, तो आपके पास sqrt(2*2^124*ln(1/(1-0,000001))) ≈ 6,5 * 10^15 GUID हो सकते हैं। यदि आप प्रति सेकंड एक हजार GUID बनाते हैं तो आप डुप्लिकेट प्राप्त करने के दस लाख से अधिक जोखिम तक पहुंचने से पहले लगभग 206667 साल तक ऐसा कर सकते हैं। 6,52191054316287e15/(3600*24*365,25*1000) ≈ 206666,874006986

मुझे उन सभी गणनाओं को सही → 0 प्राप्त करने का मौका।

संबंधित मुद्दे