2013-07-22 3 views
8

मैं 1.41421 और 3.14159 के बीच यादृच्छिक डबल नंबर उत्पन्न करने के लिए कुछ संक्षिप्त, आधुनिक सी # कोड की तलाश में हूं। जहां संख्या [0-9]{1}.[0-9]{5} प्रारूप होना चाहिए।दिए गए नंबरों के बीच यादृच्छिक डबल

मैं कुछ समाधान सोच रहा हूं जो Enumerable.Range का उपयोग करता है किसी भी तरह से यह और अधिक संक्षिप्त हो सकता है।

+1

काम करता है आप एक दशमलव के लिए पूछ रहे हैं, लेकिन जवाब आप यादृच्छिक डबल संख्या उत्पन्न करने के लिए अलग अलग तरीकों से दे। यदि आप यादृच्छिक दशमलव संख्या [यह] ढूंढ रहे हैं (http://stackoverflow.com/questions/609501/generating-a-random-decimal-in-c-sharp) मदद कर सकता है। –

+0

@MechanicalObject इस पैमाने और परिशुद्धता पर 'डबल' और 'दशमलव' के बीच कोई अंतर नहीं है, दोनों सिस्टम उस सीमा में सभी 6 अंकों की संख्या का प्रतिनिधित्व कर सकते हैं। –

+0

@ScottChamberlain: हाँ, मुझे यह धन्यवाद है धन्यवाद। लेकिन मुझे नहीं पता कि क्या dotnetandsqldevelop ने '।' के बाद संख्या सीमित कर दी है। प्रश्न के लिए या नहीं। 3.1415 9 पीआई की तरह लगता है और इस तथ्य को देखते हुए कि उसने दशमलव के लिए कहा, मैंने सोचा कि लिंक उपयोगी हो सकता है। –

उत्तर

17

आप आसानी से एक विधि है कि दो मानों के बीच एक यादृच्छिक संख्या देता है परिभाषित कर सकते हैं:

private static readonly Random random = new Random(); 

private static double RandomNumberBetween(double minValue, double maxValue) 
{ 
    var next = random.NextDouble(); 

    return minValue + (next * (maxValue - minValue)); 
} 

तब आप अपने वांछित मूल्यों के साथ इस विधि कॉल कर सकते हैं:

RandomNumberBetween(1.41421, 3.14159) 
+8

OP ने दशमलव –

9

इस तरह कुछ उपयोग करें।

Random random = new Random() 
int r = random.Next(141421, 314160); //+1 as end is excluded. 
Double result = (Double)r/100000.00; 
+0

दशमलव संख्या आवश्यक है। इसके अलावा यदि आपके पास '1.5' होगा तो यह [0-9] {1} में नहीं होगा। [0-9] {5} प्रारूप –

+0

@lazyberezovsky यह है, क्योंकि यह एक डबल विभाजन है। ऑप्टिकल फाइबर केबल। आवश्यकतानुसार बनाने की आवश्यकता है। – dognose

+1

मुझे लगता है कि ओपी [इस दशमलव] (https://en.wikipedia.org/wiki/Decimal) का जिक्र नहीं कर रहा है [वह दशमलव] (http://msdn.microsoft.com/en-us/library/system .decimal.aspx) –

5
Random r = new Random(); 
var number = r.Next(141421, 314160)/100000M; 

इसके अलावा, आप अपने आकार से मिलान करने के लिए दशमलव संख्या के लिए मजबूर नहीं कर सकते। जैसे यदि आपके पास 1.5 नंबर है तो यह 1.50000 प्रारूप से मेल नहीं खाएगा। तो, आप स्ट्रिंग के रूप में परिणाम प्रारूप चाहिए:

string formattedNumber = number.ToString("0.00000"); 
+0

1.41421 और 3.1415 9 – dognose

+0

@dognose आह धन्यवाद के बीच। मैंने सोचा कि इसे [0-9] {1} से मेल खाना चाहिए। [0-9] {5} प्रारूप –

+0

'सिस्टम। डेसीमल' में पिछली शून्य हो सकती है। उदाहरण के लिए 'var x = 1.50000M;' कॉल 'x.ToString() '** ** **' 1.50000 "' लौटाएगा। शायद विभाजन '150000/100000M' भी पीछे शून्य देता है? –

0

मैंने इसका इस्तेमाल किया। आशा है कि ये आपकी मदद करेगा। बाहर रेडीमेड कार्यान्वयन के लिए नीचे दिए गए लिंक

Random Rnd = new Random(); 

double RndNum = (double)(Rnd.Next(Convert.ToInt32(LatRandMin.Value), Convert.ToInt32(LatRandMax.Value)))/1000000; 
-1

चेक कि मदद करनी चाहिए:

MathNet.Numerics, Random Numbers and Probability Distributions

व्यापक वितरण विशेष रूप से ब्याज की हैं, यादृच्छिक संख्या जनरेटर के शीर्ष (MersenneTwister, आदि पर बनाया गया ।) सीधे सिस्टम से निकाला गया है। यादृच्छिक, सभी आसान विस्तार विधियां प्रदान करते हैं (जैसे NextFullRangeInt32, NextFullRangeInt64, NextDecimal, आदि)। आप, निश्चित रूप से, केवल डिफ़ॉल्ट SystemRandomSource का उपयोग कर सकते हैं, जो कि बस सिस्टम है। विस्तार विधियों के साथ यादृच्छिक।

ओह, और यदि आपको इसकी आवश्यकता हो तो आप अपने आरएनजी उदाहरणों को थ्रेड सुरक्षित बना सकते हैं।

वास्तव में बहुत आसान है!

+0

के लिए कहा है यह उत्तर इतना अच्छा नहीं है, लिंक मर चुका है। –

0
यहाँ

मेरी समाधान, यह बहुत नहीं है, लेकिन यह अच्छी तरह से

Random rnd = new Random(); double num = Convert.ToDouble(rnd.Next(1, 15) + "." + rnd.Next(1, 100)); Console.WriteLine(num); Console.ReadKey();

0
JMH BJHBJHHJJ const int SIZE = 1; 
     int nnOfTosses, 

      headCount = 0, tailCount = 0; 
     Random tossResult = new Random(); 

     do 
     { 
      Console.Write("Enter integer number (>=2) coin tosses or 0 to Exit: "); 
      if (!int.TryParse(Console.ReadLine(), out nnOfTosses)) 
      { 
       Console.Write("Invalid input"); 
      } 
      else 
      { 

       //***////////////////// 
       // To assign a random number to each element 
       const int ROWS = 3; 
       double[] scores = new double[ROWS]; 
       Random rn = new Random(); 

       // Populate 2D array with random values 
       for (int row = 0; row < ROWS; row++) 
       { 
        scores[row] = rn.NextDouble(); 
       } 
       //***////////////////////////// 

       for (int i = 0; i < nnOfTosses; i++) 
       { 

        double[] tossResult = new double[i]; 
        tossResult[i]= tossResult.nextDouble(); 

       } 
       Console.Write("Number of Coin Tosses = " + nnOfTosses); 
       Console.Write("Fraction of Heads = "); 
       Console.Write("Fraction of Tails = "); 
       Console.Write("Longest run is "); 
      } 
     } while (nnOfTosses != 0); 

     Console.ReadLine(); 
संबंधित मुद्दे

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