आप जैसे पाठक MUO का समर्थन करने में मदद करते हैं। जब आप हमारी साइट पर लिंक का उपयोग करके खरीदारी करते हैं, तो हम संबद्ध कमीशन अर्जित कर सकते हैं। और पढ़ें।

कई कार्यों के लिए यादृच्छिक संख्या पीढ़ी महत्वपूर्ण है। इनमें गेम डेवलपमेंट, क्रिप्टोग्राफी और डेटा एनालिसिस शामिल हैं। यादृच्छिक मूल्य परिवर्तनशीलता और अप्रत्याशितता के तत्व के साथ अलग-अलग परिणामों की अनुमति देते हैं।

गो मानक पुस्तकालय में यादृच्छिक मान उत्पन्न करने के लिए दो पैकेज प्रदान करता है: गणित/रैंड और क्रिप्टो/रैंड. गणित/रैंड पैकेज मुख्य रूप से गणितीय कार्यों के लिए है। क्रिप्टो/रैंड पैकेज क्रिप्टोग्राफिक रूप से सुरक्षित संचालन को संभालता है।

रैंड पैकेज

गणित/रैंड पैकेज के लिए एक लचीला तरीका प्रदान करता है यादृच्छिक संख्या उत्पन्न करना. यह विभिन्न छद्म-यादृच्छिक संख्या पीढ़ियों को लागू करता है। पैकेज विभिन्न वितरणों के साथ एक यादृच्छिक संख्या उत्पन्न कर सकता है, और यादृच्छिक अनुक्रम को नियंत्रित करने के लिए बीजों का उपयोग कर सकता है। यह समवर्ती या समानांतर में यादृच्छिक संख्याएँ भी उत्पन्न कर सकता है।

क्रिप्टो/रैंड पैकेज क्रिप्टोग्राफिक रूप से सुरक्षित यादृच्छिक संख्या जनरेटर को लागू करता है। इसमें उच्च संभावना वाले यादृच्छिक अभाज्य संख्याएँ उत्पन्न करने की कार्यक्षमता शामिल है।

instagram viewer

चूंकि इन पैकेजों का एक ही नाम है, इसलिए यदि आप एक ही प्रोग्राम में दोनों का उपयोग करना चाहते हैं, तो आपको उपनामों का उपयोग करना होगा, उदाहरण के लिए:

आयात (
क्रैंड "क्रिप्टो/रैंड"
श्री और "गणित/रैंड"
)

गो में यादृच्छिक पूर्णांक उत्पन्न करना

आप उपयोग कर सकते हैं गणित/रैंडइंटन एक श्रेणी में यादृच्छिक संख्या उत्पन्न करने के लिए कार्य करें।

आयात (
"एफएमटी"
"गणित/रैंड"
"समय"
)

समारोहमुख्य() {
रैंड। बीज (समय. अब ()। यूनिक्सनैनो ())

// Intn 0 और 100 के बीच एक यादृच्छिक पूर्णांक उत्पन्न करता है
// (100 सहित नहीं)
रैंडम इंट: = रैंड। इंटन(100)

fmt. Println (यादृच्छिक इंट)
}

यह कोड वर्तमान समय को पास करता है बीज समारोह। यह छद्म-यादृच्छिकता के लिए डिफ़ॉल्ट यादृच्छिक संख्या जनरेटर को प्रारंभ करता है।

इंटन रैंड पैकेज का कार्य निर्दिष्ट सीमा के बीच एक यादृच्छिक संख्या उत्पन्न करता है, इस मामले में, 0 से 100 तक।

रैंडम फ्लोटिंग-पॉइंट नंबर जेनरेट करें

आप के साथ यादृच्छिक फ़्लोटिंग पॉइंट नंबर उत्पन्न कर सकते हैं फ्लोट32 और फ्लोट64 कार्य करता है। वे क्रमशः 32-बिट और 64-बिट फ़्लोटिंग पॉइंट नंबर लौटाते हैं।

यहां बताया गया है कि आप गो में यादृच्छिक 64-बिट फ़्लोटिंग पॉइंट नंबर कैसे उत्पन्न कर सकते हैं।

आयात (
"एफएमटी"
"गणित/रैंड"
"समय"
)

समारोहमुख्य() {
रैंड। बीज (समय. अब ()। यूनिक्सनैनो ())

// 0.0 और 1.0 के बीच एक यादृच्छिक फ्लोट 64 उत्पन्न करें
रैंडमफ्लोट: = रैंड। फ्लोट64 ()

fmt. Println (रैंडमफ्लोट)
}

32-बिट फ़्लोटिंग पॉइंट नंबर जनरेट करने की प्रक्रिया रैंडम 64-बिट फ़्लोटिंग पॉइंट नंबर जनरेट करने के समान है।

गो में क्रिप्टोग्राफ़िक रूप से सुरक्षित यादृच्छिक संख्या उत्पन्न करना

आप उपयोग कर सकते हैं int यहाँ का कार्य क्रिप्टो/रैंड क्रिप्टोग्राफिक रूप से सुरक्षित यादृच्छिक संख्या उत्पन्न करने के लिए पैकेज। int यहाँ फ़ंक्शन एक पाठक उदाहरण और सीमा के लिए अधिकतम संख्या लेता है।

आयात (
"क्रिप्टो/रैंड"
"एफएमटी"
"गणित/बड़ा"
)

समारोहमुख्य() {
// एक बड़ा बनाएँ। वांछित सीमा के लिए अधिकतम मूल्य के साथ इंट
अधिकतम: = बड़ा। न्यूइंट(100000000)

// एक यादृच्छिक बड़ा उत्पन्न करें। int यहाँ
// पहला तर्क एक पाठक है जो यादृच्छिक संख्या देता है
// दूसरा तर्क अधिकतम मान है (शामिल नहीं)
रैंडआईएनटी, गलती: = रैंड। इंट (रैंड. पाठक, अधिकतम)

अगर गलती! = शून्य {
fmt. प्रिंटलन("यादृच्छिक संख्या उत्पन्न करने में त्रुटि:", गलती)
वापस करना
}

fmt. प्रिंटलन("यादृच्छिक संख्या:", रैंडआईएनटी)
}

अधिकतम चर का उपयोग कर यादृच्छिक संख्या के लिए अधिकतम मान को परिभाषित करता है NewInt का कार्य गणित / बड़ा पैकेट। int यहाँ समारोह यादृच्छिक पूर्णांक और हैंडलिंग के लिए एक त्रुटि देता है।

क्रिप्टोग्राफिक रूप से सुरक्षित यादृच्छिक मान उत्पन्न करना

क्रिप्टो/रैंड पैकेज उत्पन्न करने के लिए अंतर्निहित कार्यक्षमता प्रदान नहीं करता है क्रिप्टोग्राफिक रूप से सुरक्षित यादृच्छिक तार। फिर भी, आप इसका उपयोग करके अपना रास्ता निकाल सकते हैं पढ़ना समारोह।

आयात (
"क्रिप्टो/रैंड"
"एफएमटी"
)

समारोहक्रिप्टोरैंडम(स्ट्रिंगचार्स डोरी, मान लम्बाई int32)डोरी {
बाइट्सस्लाइस: = निर्माण([]बाइट, मान लम्बाई)
_, गलती: = रैंड। पढ़ें (बाइट्सस्लाइस)

अगर गलती! = शून्य {
वापस करना"बाइट स्लाइस से पढ़ने में त्रुटि हुई"
}

के लिए स्थिति, मूल्य: = श्रेणी बाइट्सस्लाइस {
यादृच्छिक: = मूल्य% बाइट(लेन(स्ट्रिंगचार्स))
बाइट्सस्लाइस [स्थिति] = स्ट्रिंगचर्स [यादृच्छिक]
}

वापस करनाडोरी(बाइट्सस्लाइस)
}

समारोहमुख्य() {
fmt. Println (क्रिप्टोरैंडम ("न्यूमोनौल्ट्राम" +
"आइक्रोस्कोपिकसिलिकोवोल्केनोकोनिओसिस", 10))
}

क्रिप्टोरैंडम उपरोक्त फ़ंक्शन एक यादृच्छिक स्ट्रिंग उत्पन्न करने के लिए एक स्ट्रिंग लेता है। यह एक लंबाई भी लेता है - एक 32-बिट पूर्णांक - और एक स्ट्रिंग देता है।

में क्रिप्टोरैंडम कार्य, द बाइट्सस्लाइस चर आवश्यक स्ट्रिंग लंबाई का एक टुकड़ा है। फॉर-रेंज लूप बाइट स्लाइस को पार करता है और स्लाइस के तत्वों के मॉड्यूलस और बाइट्स में स्ट्रिंग की लंबाई को वापस लाता है और पुनर्प्राप्त करता है। यह बाइट स्लाइस के इंडेक्स को स्ट्रिंग के मॉड्यूलो वैल्यू इंडेक्स के साथ अपडेट करता है।

अंततः क्रिप्टोरैंडम फ़ंक्शन बाइट स्लाइस का स्ट्रिंग स्वरूप लौटाता है।

आप गो के साथ यूयूआईडी उत्पन्न कर सकते हैं

उपयोग के मामलों की एक विस्तृत श्रृंखला के लिए यादृच्छिक मान उत्पन्न करना आसान होता है। यदि आपको कई यादृच्छिक, अद्वितीय मूल्यों की आवश्यकता है, तो आप यूयूआईडी का उपयोग कर सकते हैं।

UUIDs (यूनिवर्सली यूनिक आइडेंटिफायर्स) पहचानकर्ताओं के लिए वैश्विक विशिष्टता सुनिश्चित करते हैं। नामकरण विरोधों से बचने के दौरान आप सिस्टम में संसाधनों के बीच अंतर करने के लिए उनका उपयोग कर सकते हैं।

यूयूआईडी को गो में उत्पन्न करने के लिए आप कई पैकेजों का उपयोग कर सकते हैं। यूआईडी को कॉल करने के लिए आप ओएस पैकेज का उपयोग कर सकते हैं अपने ऑपरेटिंग सिस्टम पर कमांड, Google के UUID पैकेज का सहारा लें, या उत्पन्न करने के लिए gouuid पैकेज का उपयोग करें यूयूआईडी।