2011-11-08 19 views
15

जावा में निम्न सरल प्रोग्राम java.util.Random वर्ग का उपयोग करता है जैसे कि यह हमेशा "हैलो वर्ल्ड" प्रदर्शित करता है। कोड स्निपेट नीचे देखा जा सकता है।हार्डकोडेड बीज के साथ रैंडम का उपयोग हमेशा एक ही परिणाम क्यों उत्पन्न करता है?

package nomain; 

import java.util.Random; 

final public class J 
{ 
    public static String randomString(int seed) 
    { 
     Random rand = new Random(seed); 
     StringBuilder sb = new StringBuilder(); 

     for(int i=0;;i++) 
     { 
      int n=rand.nextInt(27); 
      if (n==0) 
      { 
       break; 
      } 
      sb.append((char) ('`'+n)); 
     } 
     return sb.toString(); 
    } 

    public static void main(String args[]) 
    { 
     System.out.println(randomString(-229985452)+' '+randomString(-147909649)); 
    } 
} 

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

+0

शायद यह इस तथ्य के साथ करना है कि यादृच्छिक संख्या जेनरेटर निर्धारित हैं ... अर्थात्, यदि एक ही बीज मूल्य का उपयोग किया जाता है, तो वही अनुक्रम हर बार उत्पन्न होगा। लेकिन मैं सकारात्मक नहीं हूँ। – Bryan

+7

यह प्रश्न उस प्रश्न का डुप्लिकेट नहीं है। यह सवाल इसके बदले में डुप्लिकेट है। – Lion

उत्तर

26

उत्तर वह पैरामीटर है जो पारित किया जा रहा है। इसका उपयोग यादृच्छिक संख्या जनरेटर को बीज करने के लिए किया जाता है।

Random rand = new Random(seed); 

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

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

संख्या -22 9985452 और -147 9 0 9 64 9 बीजों के रूप में जाना जाता है जो उस विशेष पीआरएनजी को 5 संख्याओं का अनुक्रम उत्पन्न करने का कारण बनेंगे जिसका अर्थ "हैलो" और "दुनिया" के रूप में किया जा सकता है। यदि आप उन संख्याओं को बदलना चाहते थे, तो आपको अलग-अलग 5-वर्ण अनुक्रम मिलेगा, लेकिन वे कार्यक्रम के हर भाग के लिए समान होंगे, जब तक कि बीज समान रहता है।

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

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