दिलचस्प पोस्ट
ईमेल पते को मान्य करने के लिए सी # कोड प्रोग्रामेटिक पतन या विस्तारित करें CollapsingToolbarLayout Android में TextView के नीचे एक रेखांकित करने के लिए jQuery: फ़ाइल सिस्टम से पाठ फ़ाइल पढ़ें ऑक्सीजन की शुरुआत क्यों नहीं की जाएगी (पहली बार)? कैसे div तत्व में अतिप्रवाह का पता लगाने के लिए? एडीबी का प्रयोग करके एंड्रॉइड फोन पर एक चुटकी में / आउट कमांड फायर करें Django में – मॉडल विरासत – क्या यह आपको एक मूल मॉडल के गुण को ओवरराइड करने की अनुमति देता है? मापन क्वेरी प्रदर्शन: "निष्पादन योजना प्रश्न लागत" बनाम "समय लिया" सी # किसी ऑब्जेक्ट के स्थान को प्रोग्रामेटिक रूप से बदलें क्या इन्किर्ट हमेशा 0 से प्रारंभ होते हैं? बढ़ावा देने के साथ जेएसएस को सीरियल करना और डिसेरीलाइज करना रनटाइम पर कस्टम फ़ाइल में प्रवेश करने के लिए log4j कॉन्फ़िगर करें एक स्ट्रिंग को एक NSDate में परिवर्तित करना साझा किए गए लाइब्रेरी में वैश्विक और स्थिर चर का क्या होता है, जब यह गतिशील रूप से जुड़ा होता है?

यादृच्छिक, अद्वितीय मान पैदा करना सी #

मैंने कुछ समय के लिए खोज की है और इसे खोजने के लिए संघर्ष किया है, मैं कई यादृच्छिक उत्पन्न करने की कोशिश कर रहा हूं, अनन्य संख्याएं सी # है मैं सिस्टम का उपयोग कर रहा हूँ.रैंडम, और मैं एक datetime.now.ticks बीज का उपयोग कर रहा हूँ:

public Random a = new Random(DateTime.Now.Ticks.GetHashCode()); private void NewNumber() { MyNumber = a.Next(0, 10); } 

मैं न्यूएनम्बर () को नियमित रूप से बुला रहा हूं, लेकिन समस्या मुझे बार-बार दोहराई जाती है I कुछ लोगों ने सुझाव दिया क्योंकि मैं हर बार जब मैंने यादृच्छिक घोषित कर रहा था, तो यह एक यादृच्छिक संख्या नहीं पैदा करेगा, इसलिए मैंने अपने फ़ंक्शन के बाहर घोषणा डाल दी। सिस्टम का उपयोग करने से कोई सुझाव या बेहतर तरीके। यादृच्छिक? धन्यवाद

Solutions Collecting From Web of "यादृच्छिक, अद्वितीय मान पैदा करना सी #"

मैं न्यूएनम्बर () को नियमित रूप से बुला रहा हूं, लेकिन समस्या मुझे बार-बार दोहराई जाती है I

यादृच्छिक। अगली संख्या को अनन्य होने के लिए गहन नहीं करता है। इसके अलावा आपकी सीमा 0 से 10 तक है और संभावना है कि आपको डुप्लिकेट वैल्यू मिलेगी। हो सकता है कि आप int सूची सेट कर सकते हैं और सूची में यादृच्छिक संख्या डाल सकते हैं, यह जाँच कर सकते हैं कि क्या इसमें डुप्लिकेट नहीं है। कुछ इस तरह:

 public Random a = new Random(); // replace from new Random(DateTime.Now.Ticks.GetHashCode()); // Since similar code is done in default constructor internally public List<int> randomList = new List<int>(); int MyNumber = 0; private void NewNumber() { MyNumber = a.Next(0, 10); if (!randomList.Contains(MyNumber)) randomList.Add(MyNumber); } 

यदि आप अपनी श्रेणी केवल 0 से 9 के बीच में हैं, तो संभवत: संभवत: आप की एक सरणी को फेरबदलने का प्रयास कर सकते हैं। यह संख्या पीढ़ी के किसी भी टकराव से बचने का लाभ जोड़ता है।

 var nums = Enumerable.Range(0, 10).ToArray(); var rnd = new Random(); // Shuffle the array for (int i = 0;i < nums.Length;++i) { int randomIndex = rnd.Next(nums.Length); int temp = nums[randomIndex]; nums[randomIndex] = nums[i]; nums[i] = temp; } // Now your array is randomized and you can simply print them in order for (int i = 0;i < nums.Length;++i) Console.WriteLine(nums[i]); 

मैं एक फेरबदल एल्गोरिथ्म का सही कार्यान्वयन पोस्ट कर रहा हूं, क्योंकि यहां पोस्ट किए गए एक अन्य एक समान घसीटना का उत्पादन नहीं करता है।

अन्य उत्तर के रूप में, छोटी संख्याओं को यादृच्छिक रूप से याद रखने के लिए, आप उन मानों के साथ एक सरणी को भर सकते हैं, सरणी को फेर सकते हैं, और फिर आप चाहते हैं कि कई मानों का उपयोग करें।

निम्नलिखित फिशर-येट्स शफल (उर्फ द नुट शफल) का कार्यान्वयन है (उस लिंक के "कार्यान्वयन की त्रुटियों" खंड को पढ़ें (यहां "यहां पर चलने वाले अन्य कार्यान्वयन में क्या गलत है, इस बारे में कुछ चर्चा देखने के लिए" हमेशा प्रत्येक चलना पर मान्य सरणी सूचकांक की पूरी श्रृंखला से जम्मू का चयन करें।)

 using System; using System.Collections.Generic; namespace ConsoleApplication2 { static class Program { static void Main(string[] args) { Shuffler shuffler = new Shuffler(); List<int> list = new List<int>{ 1, 2, 3, 4, 5, 6, 7, 8, 9 }; shuffler.Shuffle(list); foreach (int value in list) { Console.WriteLine(value); } } } /// <summary>Used to shuffle collections.</summary> public class Shuffler { /// <summary>Creates the shuffler with a <see cref="MersenneTwister"/> as the random number generator.</summary> public Shuffler() { _rng = new Random(); } /// <summary>Shuffles the specified array.</summary> /// <typeparam name="T">The type of the array elements.</typeparam> /// <param name="array">The array to shuffle.</param> public void Shuffle<T>(IList<T> array) { for (int n = array.Count; n > 1; ) { int k = _rng.Next(n); --n; T temp = array[n]; array[n] = array[k]; array[k] = temp; } } private System.Random _rng; } } 

नोट, मैं यह सलाह नहीं देते 🙂 यहाँ एक "यात्री" भी है:

 //This code generates numbers between 1 - 100 and then takes 10 of them. var result = Enumerable.Range(1,101).OrderBy(g => Guid.NewGuid()).Take(10).ToArray(); 

आप इस पर निर्भर करते हुए कि वास्तव में आप ऐसा कुछ कर सकते हैं:

 using System; using System.Collections.Generic; using System.Linq; namespace SO14473321 { class Program { static void Main() { UniqueRandom u = new UniqueRandom(Enumerable.Range(1,10)); for (int i = 0; i < 10; i++) { Console.Write("{0} ",u.Next()); } } } class UniqueRandom { private readonly List<int> _currentList; private readonly Random _random = new Random(); public UniqueRandom(IEnumerable<int> seed) { _currentList = new List<int>(seed); } public int Next() { if (_currentList.Count == 0) { throw new ApplicationException("No more numbers"); } int i = _random.Next(_currentList.Count); int result = _currentList[i]; _currentList.RemoveAt(i); return result; } } } 

आप एक डेटाटैप का उपयोग प्रत्येक यादृच्छिक मूल्य को संचयित कर सकते हैं, फिर बस यादृच्छिक पद्धति का प्रदर्शन करते समय! डेटा में कॉलम = कॉलम

और यहां हाशसेट का उपयोग करते हुए एन रैंडम अनन्य नंबर ढूंढने का मेरा संस्करण बहुत आसान लग रहा है, क्योंकि हैशसेट में केवल अलग आइटम शामिल हो सकते हैं यह दिलचस्प है – क्या यह सूची या शफलर का उपयोग करके तेज़ हो जाएगा?

 using System; using System.Collections.Generic; namespace ConsoleApplication1 { class RnDHash { static void Main() { HashSet<int> rndIndexes = new HashSet<int>(); Random rng = new Random(); int maxNumber; Console.Write("Please input Max number: "); maxNumber = int.Parse(Console.ReadLine()); int iter = 0; while (rndIndexes.Count != maxNumber) { int index = rng.Next(maxNumber); rndIndexes.Add(index); iter++; } Console.WriteLine("Random numbers were found in {0} iterations: ", iter); foreach (int num in rndIndexes) { Console.WriteLine(num); } Console.ReadKey(); } } } 

इस तैयार-से-उपयोग की जाने वाली विधि की जांच करें: संख्या और उस नंबर की गणना करें जिसे आप प्राप्त करना चाहते हैं।

 public static int[] getUniqueRandomArray(int min, int max, int count) { int[] result = new int[count]; List<int> numbersInOrder = new List<int>(); for (var x = min; x < max; x++) { numbersInOrder.Add(x); } for (var x = 0; x < count; x++) { var randomIndex = Random.Range(0, numbersInOrder.Count); result[x] = numbersInOrder[randomIndex]; numbersInOrder.RemoveAt(randomIndex); } return result; } 

आप सी # के बुनियादी रैंडम फ़ंक्शन का उपयोग कर सकते हैं

 Random ran = new Random(); int randomno = ran.Next(0,100); 

अब आप यादृच्छिक में मान जो कुछ भी चाहते हैं, उसका उपयोग कर सकते हैं लेकिन ध्यान रखें कि यह 0 और 100 बीच केवल एक यादृच्छिक संख्या उत्पन्न करेगा और आप इसे किसी भी आंकड़े को बढ़ा सकते हैं।

इसे इस्तेमाल करे:

 private void NewNumber() { Random a = new Random(Guid.newGuid().GetHashCode()); MyNumber = a.Next(0, 10); } 

कुछ स्पष्टीकरण:

गाइड: आधार यहां पर : एक विश्वव्यापी अद्वितीय पहचानकर्ता (GUID) का प्रतिनिधित्व करता है

Guid.newGuid() एक अद्वितीय पहचानकर्ता का उत्पादन करता है जैसे "936DA01F-9ABD-4d9d-80C7-02AF85C822A8"

और यहां पर ब्रह्मांड के आधार पर यह अद्वितीय होगा

यहां हैश कोड हमारे अद्वितीय पहचानकर्ता से एक अद्वितीय पूर्णांक का उत्पादन करता है

तो Guid.newGuid().GetHashCode() हमें एक अनूठी संख्या देता है और यादृच्छिक वर्ग वास्तविक यादृच्छिक संख्या उत्पन्न करेगा