2009-06-17 22 views
6

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

यह मेरा RandomNumber विधि है:

private int RandomNumber(int min, int max) 
    { 
     Random random = new Random(); 
     return random.Next(min, max); 
    } 

इस संदर्भ मैं में यह उपयोग कर रहा हूँ है: (यह थोड़ा जटिल सिर्फ इसलिए कि मैं यह काम करने के लिए प्राप्त करने की कोशिश के साथ खिलवाड़ किया गया है है ....)

 for (int i = 0; i < charsRaw.Length; i++) 
     { 
      int max = charsRaw.Length - 1; 
      int rand = 0; 
      rand = RandomNumber(0, max); 

      charsNew[i] = charsRaw[rand]; 
      text2 += charsNew[i]; 

     } 

मुझे लूप के साथ हर बार एक अलग मूल्य वापस करने के लिए प्रतीत नहीं होता है।

हालांकि, जब मैं text2 + = charsNew [i] के बाद एक संदेशबॉक्स दिखाता हूं। (Rand.ToString()), यह मुझे हर बार एक अलग मूल्य देता है और जिस तरह से मैं चाहता हूं उसका काम करता है। अजीब।

धन्यवाद! एरिक

उत्तर

17

इंस्टेंटियेट एक बार यादृच्छिक। उसी उदाहरण पर कई बार .ext() पर कॉल करें।

MSDN:

यादृच्छिक संख्या पीढ़ी एक बीज मूल्य से शुरू होता है। वही बीज बार-बार इस्तेमाल होता है, तो संख्या का एक ही श्रृंखला

उत्पन्न होता है आप बार-बार रैंडम का दृष्टांत करना चाहते हैं एक अलग बीज हर बार का उपयोग करते हैं।

+0

धन्यवाद! यह काम किया! – Eric

+4

अंतिम पैराग्राफ थोड़ा भ्रामक है। नया रैंडम() बिल्कुल वही करता है, जो कि वर्तमान समय के साथ जनरेटर को बीजिंग करता है। चूंकि आप इसे एक तंग पाश के भीतर करते हैं, इसलिए आपको कई समान उदाहरण मिल रहे हैं, जो निश्चित रूप से समान अनुक्रम उत्पन्न करते हैं। वर्तमान समय के साथ मैन्युअल रूप से बीजिंग चीजों को बेहतर बनाने के लिए काम नहीं करता है। इसके अलावा, आपको उन बीजों में बहुत अधिक रैखिक निर्भरता मिलेगी जो अधिकांश जेनरेटर (सीएफ। Http://portal.acm.org/citation.cfm?doid=1276927.1276928) – Joey

+0

अच्छी कॉल में यादृच्छिकता के लिए एक बुरी चीज है। मैं संपादित करूंगा। – anthony

1

कुछ भी नहीं कह रहा है कि वास्तव में यादृच्छिक अनुक्रम प्रत्येक बार एक ही संख्या नहीं हो सकता है! :-) एक छोटी संभावना है कि यह कानूनी है ताकि आप वास्तव में कभी भी सुनिश्चित न हो। कवर के लिए बतख

+0

http://web.archive.org/web/20011027002011/http://dilbert.com/comics/dilbert/archive/images/dilbert2001182781025.gif –

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