में यादृच्छिक रूप से उत्पन्न हेक्साडेसिमल संख्या सी # का उपयोग करके मेरी पसंद की लंबाई के साथ एक यादृच्छिक हेक्साडेसिमल संख्या कैसे उत्पन्न कर सकता हूं?सी #
सी #
उत्तर
static Random random = new Random();
public static string GetRandomHexNumber(int digits)
{
byte[] buffer = new byte[digits/2];
random.NextBytes(buffer);
string result = String.Concat(buffer.Select(x => x.ToString("X2")).ToArray());
if (digits % 2 == 0)
return result;
return result + random.Next(16).ToString("X");
}
Random random = new Random();
int num = random.Next();
string hexString = num.ToString("X");
random.Next() तर्क आप एक मिनट और एक अधिकतम मान निर्दिष्ट करते हैं कि लगता है, इसलिए तुम कैसे लंबाई को नियंत्रित होता है कि।
इस पर निर्भर करता है कि आप इसे कितना यादृच्छिक चाहते हैं, लेकिन यहां 3 विकल्प हैं: 1) मैं आमतौर पर केवल Guid.NewGuid का उपयोग करता हूं और इसका एक हिस्सा चुनता हूं (डीपी। मुझे कितनी बड़ी संख्या चाहिए)।
2) सिस्टम। यादृच्छिक (अन्य उत्तरों देखें) अच्छा है अगर आप बस 'यादृच्छिक पर्याप्त' चाहते हैं।
3) System.Security.Cryptography.RNGCryptoServiceProvider
के बीच उत्पन्न होती है GUID को स्लाइस करना एक जैसा लगता है मेरे लिए असली बुरा विचार। वे पूरी तरह से अद्वितीय रूप से लिया जाता है। एक GUID के कई बिट्स निश्चित रूप से यादृच्छिक के रूप में योग्य नहीं हैं। – spender
@ स्पेंडर सही है, उदाहरण के लिए कई GUID में पीसी उत्पन्न करने वाले पीसी का मैक पता होता है। –
एह, नहीं, मैक-एड्रेस आधारित guids 2000-ish में सेवानिवृत्त हुए थे क्योंकि उन्हें संभावित सुरक्षा समस्या माना गया था। GUID अब यादृच्छिक संख्या जनरेटर द्वारा उत्पन्न होते हैं (122 बिट्स यादृच्छिक, 6 बिट गैर-यादृच्छिक)। किसी भी तरह से, एक guid के 32 (या अधिक) बिट टुकड़ा का उपयोग कर सिस्टम से अधिक यादृच्छिक संख्या देता है। यादृच्छिक। यह है - जब तक कि आप यूयूडक्रेट सिक्योरेंशियल को कॉल न करें जो किसी भी पुराने स्टाइल गाइड के मामले में पिछड़ा संगतता के लिए जोड़ा गया था, लेकिन यह एक अलग कहानी है। – KristoferA
यहाँ एक है कि एक 256-बिट हेक्स स्ट्रिंग वापसी होगी है (8x8 = 256):
private static string RandomHexString()
{
// 64 character precision or 256-bits
Random rdm = new Random();
string hexValue = string.Empty;
int num;
for (int i = 0; i < 8; i++)
{
num = rdm.Next(0, int.MaxValue);
hexValue += num.ToString("X8");
}
return hexValue;
}
- 1. सी/सी ++/जावा/सी #
- 2. सी #, सी/सी ++ या ऑब्जेक्टिव-सी
- 3. सी/सी ++
- 4. सी/सी ++
- 5. सी/सी ++
- 6. सी/सी ++
- 7. सी/सी ++
- 8. सी/सी ++
- 9. सी/सी ++
- 10. सी/सी ++
- 11. सी/सी ++
- 12. सी/सी ++
- 13. सी/सी ++
- 14. सी/सी ++
- 15. सी/सी ++
- 16. सी/सी ++
- 17. सी/सी ++
- 18. सी/सी ++
- 19. सी/सी ++
- 20. सी/सी ++
- 21. सी/सी ++
- 22. सी/सी ++
- 23. सी/सी ++
- 24. सी/सी ++
- 25. सी/सी ++
- 26. सी/सी ++
- 27. सी/सी ++
- 28. सी/सी ++
- 29. सी/सी ++
- 30. सी/सी ++
यह काम तभी करेंगे जब 'लंबाई <= 8' 'int.MaxValue' के रूप में 8 हेक्स अंकों में फिट बैठता है। –
यदि वह वास्तव में हेक्स स्ट्रिंग को अपनी पसंद की लंबाई का होना चाहता है, तो आपको उस कोड की आवश्यकता होगी जो हेक्स लम्बाई 'x' के साथ न्यूनतम संख्या की गणना करे और अधिकतम 'x' के साथ अधिकतम हो। – colithium
हाँ। मैंने इसे उद्देश्य पर छोड़ दिया, लेकिन आपको मूल रूप से 0xF पर रूपांतरण करना होगा? ('मेरी नियमित अभिव्यक्ति का दुरुपयोग करें) जो भी पूर्णांक आपकी वांछित लंबाई से मेल खाता है। – womp