मैं एक सीमा के भीतर यादृच्छिक संख्याओं के उत्पादन के बारे में कैसे जा सकता हूं?
मैं एक सीमा के भीतर यादृच्छिक संख्याओं के उत्पादन के बारे में कैसे जा सकता हूं?
जवाबों:
तुम कोशिश कर सकते हो
Random r = new Random();
int rInt = r.Next(0, 100); //for ints
int range = 100;
double rDouble = r.NextDouble()* range; //for doubles
अच्छी तरह से देखिए
रैंडम क्लास , रैंडम । Next मेथड (Int32, Int32) और रैंडम। NextDouble Method
Random()
समय-निर्भर बीज का उपयोग करता है, लेकिन यह स्पष्ट रूप से लिखना कि पठनीयता के लिए बेहतर है।
कोड के नीचे प्रयास करें।
Random rnd = new Random();
int month = rnd.Next(1, 13); // creates a number between 1 and 12
int dice = rnd.Next(1, 7); // creates a number between 1 and 6
int card = rnd.Next(52); // creates a number between 0 and 51
कुछ इस तरह:
var rnd = new Random(DateTime.Now.Millisecond);
int ticks = rnd.Next(0, 3000);
DateTime.Now.Millisecond
?
Random
पहले से ही एक सिस्टम मूल्य के साथ वरीयता प्राप्त है, और Millisecond
केवल 0 और 999 के बीच की एक संख्या है। यदि लाइनों की यह जोड़ी हमेशा कोड में एक साथ होती थी, rnd.Next
तो बीज के हर बार रीसेट होने के कारण केवल 1000 संभावित मान होंगे । एक ही बीज में, एक ही यादृच्छिक संख्या बाहर। मैं मैनुअल बीज बाहर छोड़ दूँगा।
Environment.TickCount
।
उपयोग:
Random r = new Random();
int x= r.Next(10);//Max range
भविष्य के पाठकों के लिए यदि आप एक श्रेणी में एक यादृच्छिक संख्या चाहते हैं तो निम्न कोड का उपयोग करें:
public double GetRandomNumberInRange(double minNumber, double maxNumber)
{
return new Random().NextDouble() * (maxNumber - minNumber) + minNumber;
}
return new Random().NextDouble() * (maxNumber - minNumber) + minNumber;
रैंडम क्लास के अलावा , जो पूर्णांक और युगल उत्पन्न करता है, पर विचार करें:
स्टैक ओवरफ्लो प्रश्न (U) Int64 और दशमलव के यादृच्छिक विवश मूल्यों (छद्म) की उत्पत्ति
यहाँ Darrelk उत्तर से अद्यतन संस्करण है । इसे C # एक्सटेंशन विधियों का उपयोग करके लागू किया गया है । यह है स्मृति को आबंटित नहीं ( नई यादृच्छिक () ) हर बार इस विधि कहा जाता है।
public static class RandomExtensionMethods
{
public static double NextDoubleRange(this System.Random random, double minNumber, double maxNumber)
{
return random.NextDouble() * (maxNumber - minNumber) + minNumber;
}
}
उपयोग (उन नामों को आयात करना सुनिश्चित करें जिनमें रैंडम एक्स्टेंशनमेथोड्स क्लास शामिल हैं):
var random = new System.Random();
double rx = random.NextDoubleRange(0.0, 1.0);
double ry = random.NextDoubleRange(0.0f, 1.0f);
double vx = random.NextDoubleRange(-0.005f, 0.005f);
double vy = random.NextDoubleRange(-0.005f, 0.005f);
double rDouble = (r.NextDouble()*2)-1.0;