2012-10-16 16 views
7

.NET Framework का उपयोग कर सी # में यादृच्छिक GUID बनाएं, क्या एक निर्दिष्ट अंतराल के भीतर सी # में यादृच्छिक GUID बनाने का कोई तरीका है? उदाहरण के लिए, मुझे एक यादृच्छिक GUID की आवश्यकता है जो ffffffff-ffff-ffff-ffff-1fffffffffffff से अधिक है और ffffffff-ffff-ffff-ffff-2fffffffffffff से कम है।एक निर्दिष्ट अंतराल

+0

क्या होगा यदि आपको सीमा में से अधिक GUID उत्पन्न करने की आवश्यकता है? E.g आपके एल्गोरिदम को श्रेणी ffffffff-ffff-ffff-ffff-fffffffffffff0 से ffffffff-ffff-ffff-ffff-ffffffffffffff के लिए 20 बार कहा जाता है? –

+2

ऐसा नहीं है कि वे आम तौर पर कैसे काम करते हैं। इसके लिए कुछ गैर-यादृच्छिक तत्व हैं, लेकिन संस्करणों के कारणों के लिए, और आप केवल (यादृच्छिक GUIDs के साथ) किसी विशेष श्रेणी में उत्पन्न नहीं कर सकते हैं। अन्यथा वे काम नहीं करेंगे जैसे वे करते हैं। – ssube

उत्तर

7

उपयोग this overload:

0000000a-000b-000c-0001-020304050607 

आप किसी भी तरह से आप की तरह पैरामीटर randomize कर सकते हैं:

[CLSCompliantAttribute(false)] 
public Guid(
    uint a, 
    ushort b, 
    ushort c, 
    byte d, 
    byte e, 
    byte f, 
    byte g, 
    byte h, 
    byte i, 
    byte j, 
    byte k 
) 

Guid(0xa,0xb,0xc,0,1,2,3,4,5,6,7) एक Guid कि से मेल खाती है बनाता है। उदाहरण के लिए, आप कर सकते हैं:

var r[] = new byte[] { 1,2,3,4 } // chosen by fair dice rolls 
           // guaranteed to be random 

var guid = new GUID(0xFFFFFFFF, 0xFFFF, 0xFFFF, 0xFFFF, r[1], r[2], r[3], r[4]... 

ठीक है, आपको विचार मिलता है। पांचवां पैरामीटर सही पाने के लिए आपको थोड़ा सा झुकाव करना है।

+3

हालांकि यह स्पष्ट बता रहा है, सिर्फ इसलिए कि यह 'Guid' है इसका मतलब यह नहीं है कि यह एक GUID है। यही है, यह सुनिश्चित करने के लिए आप पर निर्भर है कि आपका एल्गोरिदम वैश्विक विशिष्टता सुनिश्चित करता है। अन्यथा यह सिर्फ एक 'आईडी' है। –

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