تولید اعداد تصادفی غیر تکراری

Non-repetitive random number C#

مشکل کلاس Random اینه که همیشه اعدادی که تولید می کنه غیر تکراری نیستند و گاهی یک عدد چندین بار پشت سر هم تکرار میشه حتی اگر از تعریف زیر استفاده کنیم:

Random random = new Random((int)DateTime.Now.Ticks);

خروجی متد زیر لیستی است شامل اعداد غیر تکراری بین اعداد ورودی به تابع.

List<int> UniqueRandom(int minInclusive, int maxInclusive) { List<int> ReturnList = new List<int>(); List<int> candidates = new List<int>(); for (int i = minInclusive; i <= maxInclusive; i++) { candidates.Add(i); } Random rnd = new Random(); while (candidates.Count > 0) { int index = rnd.Next(candidates.Count); ReturnList.Add(candidates[index]); candidates.RemoveAt(index); } return ReturnList; }



منبع

/ 0 نظر / 903 بازدید