c# - 2 डबल नंबर के बीच यादृच्छिक संख्या




random (7)

क्या 2 युगल के बीच एक यादृच्छिक संख्या उत्पन्न करना संभव है?

उदाहरण:

public double GetRandomeNumber(double minimum, double maximum)
{
    return Random.NextDouble(minimum, maximum) 
}

फिर मैं इसे निम्नलिखित के साथ बुलाता हूं:

double result = GetRandomNumber(1.23, 5.34);

किसी भी विचार की सराहना की जाएगी।

https://code.i-harness.com


आप इस तरह के कोड का उपयोग कर सकते हैं:

public double getRandomNumber(double minimum, double maximum) {
    return minimum + randomizer.nextDouble() * (maximum - minimum);
}

आप यह कर सकते हैं:

public class RandomNumbers : Random
{
    public RandomNumbers(int seed) : base(seed) { }

    public double NextDouble(double minimum, double maximum)
    {
        return base.NextDouble() * (maximum - minimum) + minimum;
    }
}

क्या होगा यदि मूल्यों में से एक नकारात्मक है? बेहतर विचार नहीं होगा:

double NextDouble(double min, double max)
{
       if (min >= max)
            throw new ArgumentOutOfRangeException();    
       return random.NextDouble() * (Math.Abs(max-min)) + min;
}

जॉनी 5 ने एक विस्तार विधि बनाने का सुझाव दिया। यहां एक और पूर्ण कोड उदाहरण दिया गया है जो दिखा रहा है कि आप यह कैसे कर सकते हैं:

public static class RandomExtensions
{
    public static double NextDouble(
        this Random random,
        double minValue,
        double maxValue)
    {
        return random.NextDouble() * (maxValue - minValue) + minValue;
    }
}

अब आप इसे कॉल कर सकते हैं जैसे कि यह Random वर्ग पर एक विधि थी:

Random random = new Random();
double value = random.NextDouble(1.23, 5.34);

ध्यान दें कि आपको लूप में कई नई Random ऑब्जेक्ट्स नहीं बनाना चाहिए क्योंकि इससे यह संभावना हो जाएगी कि आपको पंक्ति में कई बार समान मूल्य मिल जाए। यदि आपको बहुत से यादृच्छिक संख्याओं की आवश्यकता है तो Random का एक उदाहरण बनाएं और इसका पुन: उपयोग करें।


सबसे आसान दृष्टिकोण केवल 0 और दो संख्याओं के अंतर के बीच एक यादृच्छिक संख्या उत्पन्न करेगा। फिर परिणाम में दो संख्याओं के छोटे जोड़ें।


हाँ।

Random.NextDouble 0 और 1 के बीच एक डबल देता है। फिर आप उस सीमा से गुणा करते हैं जिसमें आपको जाने की आवश्यकता होती है (अधिकतम और न्यूनतम के बीच अंतर) और फिर उसे आधार (न्यूनतम) में जोड़ें।

public double GetRandomNumber(double minimum, double maximum)
{ 
    Random random = new Random();
    return random.NextDouble() * (maximum - minimum) + minimum;
}

वास्तविक कोड यादृच्छिक सदस्य होना चाहिए। यह यादृच्छिक संख्या जेनरेटर बनाने की लागत को बचाएगा, और आपको अक्सर GetRandomNumber को कॉल करने में सक्षम करेगा। चूंकि हम प्रत्येक कॉल के साथ एक नया आरएनजी शुरू कर रहे हैं, यदि आप पर्याप्त तेज़ी से कॉल करते हैं कि कॉल के बीच सिस्टम का समय नहीं बदलता है तो आरएनजी सटीक उसी टाइमस्टैम्प के साथ बीजित हो जाएगा, और यादृच्छिक संख्याओं की एक ही स्ट्रीम उत्पन्न करेगा।


Random random = new Random();

double NextDouble(double minimum, double maximum)
{  

    return random.NextDouble()*random.Next(minimum,maximum);

}





random