संभव डुप्लिकेट बनाना:
Why does it appear that my random number generator isn't random in C#?
How can I generate truly (not pseudo) random numbers with C#?एक सच्चे यादृच्छिक
मैं एक पासा खेल है जहाँ पासा एक प्रतिशतक, 1-100 पर आधारित है बना लिया है।
public static void Roll()
{
Random rand = new Random((int)DateTime.Now.Ticks);
return rand.Next(1, 100);
}
लेकिन मुझे ऐसा नहीं लगता कि यह वर्तमान समय के आधार पर एक वास्तविक यादृच्छिक है।
अगर मैं
for (int i = 0; i < 5; i++)
{
Console.WriteLine("#" + i + " " + Roll());
}
कर वे सब, एक ही मान होगा क्योंकि DateTime.Now.Ticks
परिवर्तन नहीं किया है, यह एक ही नंबर वरीयता प्राप्त।
मैं सोच रहा था मैं एक नया यादृच्छिक बीज उत्पन्न कर सकता है, तो बीज वर्तमान समय की वजह से ही था, लेकिन यह एक ईमानदार "फिर से रोल"
क्या मैं कोशिश करने के लिए क्या करना चाहिए का मन नहीं करता और वास्तविक/ईमानदार पासा रोल के करीब एक प्रतिलिपि बनाएँ? क्या मुझे रोल बनाने के लिए RNGCryptoServiceProvider
कक्षा का उपयोग करना चाहिए? इसलिए यदि आपको लगता है कि अधिभार के साथ एक Random
एक 16ms "स्लॉट" वे सभी एक ही मूल्य के साथ वरीयता प्राप्त हो जाएगा के अंतर्गत कई बार बना सकते हैं और इसलिए आप उसी क्रम मिल जाएगा
मैं इसे पढ़ने का सुझाव देता हूं: http://csharpindepth.com/Articles/Chapter12/Random.aspx – Oded
SO पर इस प्रश्न के कई भिन्नताएं हैं। यहां उनमें से एक है ... [ऐसा क्यों लगता है कि मेरा यादृच्छिक संख्या जेनरेटर सी # में यादृच्छिक नहीं है?] (Http://stackoverflow.com/questions/932520/why-does-it-appear-that-my- यादृच्छिक-संख्या-जनरेटर-isnt-random-in-c) ... डुप्ली के रूप में चिह्नित करना। (आपके पास प्रत्येक रोल के लिए एक नए रैंडम की बजाय आपके रैंडम का केवल एक स्थिर उदाहरण होना चाहिए) – spender
"असली यादृच्छिक" क्या है? – Sandy