2013-01-20 19 views
21

जावा में हमारे पास स्थिर वर्ग गणित है। आपको इसकी वस्तुओं को इतना स्थिर बनाने की आवश्यकता नहीं है। एक और यादृच्छिक वर्ग है। हमें इसके उदाहरण बनाने की जरूरत नहीं है, इसलिए यह स्थिर क्यों नहीं है? मेरी कक्षाएं मैं यादृच्छिक संख्या उत्पन्न करने के लिए हर वर्ग में फील्ड रैंड बनाने के लिए यादृच्छिक numbes का उपयोग करते हैं और पागल हो जाते हैं। तो यह स्थिर क्यों नहीं है?यादृच्छिक वर्ग स्थिर क्यों नहीं है?

+9

उम, जावा में शीर्ष-स्तरीय कक्षाएं स्थिर के रूप में घोषित नहीं की जा सकती हैं, और आपको * यादृच्छिक' के उदाहरण बनाने की आवश्यकता है। आपके प्रश्न के दोनों परिसर गलत हैं, मूल रूप से। –

+0

कक्षा =/= विधि। –

+0

मैथ में एक स्थिर यादृच्छिक() है। – josefx

उत्तर

24

रैंडम क्लास में राज्य है, जिसमें यह अनुक्रम में है, क्योंकि उत्पादित मूल्य वास्तव में यादृच्छिक नहीं हैं, केवल एक छद्म-यादृच्छिक अनुक्रम।

यह उसी बीज के साथ दो उदाहरण शुरू करके प्रदर्शित किया जा सकता है।

Random a = new Random(123); 
Random b = new Random(123); 
for (int i = 0; i < 5; i++) { 
    System.out.println(a.nextInt() + "," + b.nextInt()); 
} 

आउटपुट

-1188957731,-1188957731 
1018954901,1018954901 
-39088943,-39088943 
1295249578,1295249578 
1087885590,1087885590 

आप डिफ़ॉल्ट निर्माता रैंडम() के साथ बनाते हैं, तो उसके बाद बीज नैनोसेकंड में वर्तमान समय + एक स्थिर काउंटर, जिसका अर्थ है के आधार पर आरंभ नहीं हो जाता विभिन्न मामलों को बहुत संभावना है विभिन्न अनुक्रमों के लिए।

+1

* यदि आप डिफॉल्ट कन्स्ट्रक्टर रैंडम() के साथ बनाते हैं, तो बीज को वर्तमान समय के साथ मिलीसेकंड में प्रारंभ किया जाता है * - यह गलत है, डिफ़ॉल्ट 'नए रैंडम()' के लिए भी बीजिंग 'सिस्टम से अधिक परिष्कृत है .currentTimeMillis() ' – bestsss

+0

@bestsss Apologies, आप सही हैं। मैं java.util.Random के लिए कुछ बहुत पुराने स्रोत को देख रहा था (Google पर पहले मैचों में से एक है)। System.currentTimeMillis() का प्रयोग व्यवहार पूर्व 1.5 होता था, लेकिन अब जैसा कि आप कहते हैं, अधिक परिष्कृत। – Adam

+0

हां, यह 1.5 में बदला गया था, यह वास्तव में केवल मिलीसेक था (काफी लंगड़ा) – bestsss

13

आप क्योंकि एक यादृच्छिक संख्या जनरेटर राज्य है, उदाहरण बना लिए जरूरत करना । विशेष रूप से, राज्य जो छद्म-यादृच्छिक अनुक्रम में वर्तमान स्थिति को नियंत्रित करता है।

यदि आप एकाधिक स्वतंत्र जनरेटर (जो राज्य साझा नहीं करते हैं) चाहते हैं, तो आपको अलग-अलग उदाहरणों की आवश्यकता है।

4

कारण यह है कि आपको कई स्वतंत्र यादृच्छिक संख्या जेनरेटर की आवश्यकता हो सकती है। यह Random के कई उदाहरण प्राप्त करके हासिल किया जाता है।

5

यह सब बीज के बारे में है। जैसा कि आप जानते हैं कि हम वास्तविक यादृच्छिक संख्याओं के बारे में बात नहीं करते हैं लेकिन छद्म-यादृच्छिक। जब आप पहली संख्या जानते हैं तो आप दूसरों की गणना कर सकते हैं। यही कारण है कि हम somethig का उपयोग करते हैं जिसे 'बीज' कहा जाता है। Random की प्रत्येक वस्तु में अलग-अलग बीज हैं। यदि Random स्थिर होगा तो आपके पास दो अलग-अलग बीज नहीं हो सकते हैं। ध्यान दें कि setSeed() विधि तब सभी यादृच्छिक संख्या जनरेटर को प्रभावित करेगी (और हम अक्सर केवल एक को बदलना चाहते हैं)।

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