संभावित डुप्लिकेट:
c# - getting the same random number repeatedly
Random number generator not working the way I had planned (C#)यादृच्छिक संख्या पीढ़ी - एक ही नंबर लौटे
मैं एक विधि है कि ints की एक कतार बनाता है:
public Queue<int> generateTrainingInts(int count = 60)
{
Queue<int> retval = new Queue<int>();
for (int i = 0; i < count; i++)
{
retval.Enqueue(JE_Rand.rInt(2001, 100));
}
return retval;
}
JE_Rand .rInt() सिर्फ एक समारोह है जो प्रतिनिधि रैंडम वर्ग के एक समारोह के लिए तों:
public static int rInt(int exclUB, int incLB = 0)
{
Random rand = new Random(DateTime.Now.Millisecond);
int t = rand.Next(incLB, exclUB);
rand = null;
return t;
}
लेकिन जब मैं generateTrainingInts कहते हैं, एक ही नंबर हर बार कतारबद्ध कर रहा है। हालांकि, यदि मैं स्थानीय उदाहरण के बजाय रैंडम क्लास के स्थिर उदाहरण का उपयोग करने के लिए आरआईएनटी बदलता हूं (फ़ंक्शन स्कोप के साथ जैसा ऊपर परिभाषित किया गया है), तो यह सही ढंग से काम करता है (यादृच्छिक पूर्णांक संलग्न करें)। क्या कोई जानता है कि ऐसा क्यों होता है?
संपादित करें: प्रिय उत्तरदाताओं जिन्होंने मेरे प्रश्न को पूरी तरह से नहीं पढ़ा, जैसा कि आप में से कुछ ने बताया, मैं ऐसा क्यों करता हूं कि यह क्यों होता है, इसकी एक अच्छी व्याख्या की तलाश में है। मैं समान संख्या में जेनरेट की गई समस्या का समाधान नहीं ढूंढ रहा हूं, क्योंकि मैंने पहले से ही तय किया है जैसा मैंने उपरोक्त कहा था। यद्यपि आपके उत्साह के लिए धन्यवाद :) मैं वास्तव में इस तरह की चीजों को समझना चाहता हूं, क्योंकि मेरा पहला कार्यान्वयन मेरे लिए अवधारणात्मक रूप से अधिक समझ में आया है।
लगता है नकल ... -http तरह realted सवालों को देखो: //stackoverflow.com/questions/1437825/random-number-generation-in-c –
यह इसलिए होता है क्योंकि 'Random' वस्तु से आरंभ नहीं हो जाता 'पर्यावरण।GetTickCount', जो एक मिलीसेकंद टाइमर है। इसलिए यदि आप एक ही मिलीसेकंड में दो बार 'रैंडम' कन्स्ट्रक्टर को कॉल करते हैं, तो आपको वही प्रारंभिक मान प्राप्त होगा। –
जब रैंड को उसी बीज के साथ तत्काल किया जाता है (उदा। डेटटाइम.अब। मिलिसेकंड आपके मामले में), तो यह मानों के समान अनुक्रमों को वापस कर देगा। आपको इसे एक बार तुरंत चालू करना चाहिए (और इसे एक स्थिर चर में स्टोर करें), या प्रत्येक बार विभिन्न बीज के साथ। – AFract