संभवतः सबसे महत्वपूर्ण अंतर यह है कि एकता का Random.Range
स्थिर होना थोड़ा आसान है। C # बेस क्लास लाइब्रेरी System.Random
, हालाँकि, आपको अधिक नियंत्रण और अलगाव प्रदान करती है।
यह संभव है कि वे अलग-अलग अंडर-हूड कार्यान्वयन का उपयोग करें (हालांकि मेरा अनुमान है कि यूनिटी Random
को सिस्टम के संदर्भ में लागू किया गया है Random
), लेकिन यह संभवतः एक उल्लेखनीय चिंता का विषय नहीं है। मौलिक रूप से वे दोनों एक ही प्रकार के यादृच्छिक संख्या जनरेटर की संभावना रखते हैं : एक छद्म यादृच्छिक जनरेटर जो किसी बीज द्वारा परिभाषित अनुक्रम को पुनरावृत्त करने पर आधारित है)।
नियंत्रण मुद्दा अधिक प्रासंगिक है, क्योंकि कुछ संदर्भों में आप विभिन्न चीजों के लिए विभिन्न यादृच्छिक धाराओं का उपयोग करना चाह सकते हैं। उदाहरण के लिए, एक लॉक-स्टेप नेटवर्किंग नेटवर्किंग संदर्भ में, आप गेम में सभी खिलाड़ियों में यादृच्छिक गेमप्ले को प्रभावित करने वाली घटनाओं को उत्पन्न करने के लिए उपयोग किए गए बीज को ठीक करना चाह सकते हैं, लेकिन आप विशुद्ध रूप से उपयोग किए जाने वाले यादृच्छिक संख्याओं की धारा के बारे में इतना ध्यान नहीं दे सकते हैं। दृश्य घटनाएं और उस धारा को एक अधिक पारंपरिक फैशन में बीजित किया जा सकता है (उदाहरण के लिए, गेम लॉन्च के समय सिस्टम अपटाइम के साथ)।
इसी तरह, यदि आप कई थ्रेड्स में रैंडम नंबर जेनरेट करने जा रहे हैं, तो आप चाहें तो रेस की परिस्थितियों को रोकने के लिए प्रत्येक थ्रेड के लिए अलग-अलग रैंडम ऑब्जेक्ट्स का उपयोग कर सकते हैं। यह तब हो सकता है जब आपका गेम लॉजिक कई थ्रेड्स पर चलता है और उदाहरण के लिए आपके पास गेमप्ले रीप्ले सिस्टम भी है।
अंत में, सामान्य रूप से एक या दूसरे का उपयोग करना बेहतर नहीं है , बल्कि पेशेवरों और विपक्ष हैं। जब आपको अन्य संभावित यादृच्छिक अनुक्रमों से संख्याओं के अनुक्रम को अलग करने की आवश्यकता हो सकती है, या जब आपको अनुक्रम के बीज पर स्थानीय नियंत्रण की आवश्यकता होती है, तो उदाहरण का उपयोग करें System.Random
। यदि आपको थ्रोट-यूज़ या कुछ अन्य गैर-प्रभावकारी परिदृश्य के लिए बस एक त्वरित-गंदे यादृच्छिक मूल्य की आवश्यकता है, तो यूनिटी का सरलीकृत Random
शायद ठीक है।