एक विशिष्ट मान के साथ रैंडम क्लास के बीज को सेट करने के बावजूद, रैंडम नंबर जेनरेटर लगातार वही नंबर लौटा रहा है। आइए देखें कि इस समस्या का कारण क्या हो सकता है।
जावा रैंडम क्लास को छद्म-यादृच्छिक संख्याएँ उत्पन्न करने के लिए डिज़ाइन किया गया है। डिफ़ॉल्ट रूप से, यह अपनी आंतरिक घड़ी को बीज मान के रूप में उपयोग करता है, जिससे यह संख्याओं का अपेक्षाकृत अनुमानित अनुक्रम उत्पन्न करता है। अनुक्रम को अनुकूलित करने के लिए, आप setSeed() विधि का उपयोग करके स्पष्ट रूप से एक बीज सेट कर सकते हैं।
बीज एक संख्यात्मक मान है जिसका उपयोग यादृच्छिक संख्या जनरेटर की आंतरिक स्थिति को आरंभ करने के लिए किया जाता है। यह स्थिति उत्पन्न संख्याओं के अनुक्रम को निर्धारित करती है।
प्रदान किए गए कोड में, आप रैंडम() विधि के भीतर रैंडम का एक नया इंस्टेंस बना रहे हैं। इसका मतलब यह है कि हर बार जब आप रैंडम() को कॉल करते हैं, तो एक नया बीज सेट किया जा रहा है, जो पहले से निर्धारित बीज मान को प्रभावी ढंग से ओवरराइड कर रहा है।
इस समस्या को हल करने के लिए, आपको रैंडम उदाहरण को पूरी कक्षा में साझा करना होगा। एक एकल उदाहरण बनाकर और कक्षा आरंभ होने पर एक बार बीज सेट करके, आप सुनिश्चित करते हैं कि संख्याओं का समान क्रम लगातार उत्पन्न होता है।
निम्न अद्यतन कोड समस्या का समाधान करता है:
public class Numbers { private Random randnum; public Numbers() { randnum = new Random(); randnum.setSeed(123456789); } public int random(int i) { return randnum.nextInt(i); } }
इस अद्यतन कोड में:
ये परिवर्तन करके, अब आप अलग-अलग प्राप्त करेंगे आपके प्रोग्राम के विभिन्न हिस्सों से यादृच्छिक() को कॉल करते समय यादृच्छिक संख्याएं, निर्दिष्ट बीज मूल्य का सम्मान करते हुए।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3