摘要:[c#] 亂數不重複
Interduction
可能有時候,我們需要再連續的數字中(如 5~19),亂數取出,但又不重複。
小弟我,自己做個練習。網路上關於﹝產生不重覆的亂數﹞方法很多,先列出一些參考的好文。
- Random 類別
- [VBA] 演算法 - 亂數 不重複 - VB/ VBA/ C#/ Java/ C++ 語言學習筆記 美妙人生- 點部落
JavaScript的shuffle演算法(發亂數不重複)南史氏言
Example
class Program { static void Main(string[] args) { int[] arrNumber = GenerateRandom(3, 18); for (int N1 = 0; N1 < arrNumber.Length; N1++) { Console.Write(" " + arrNumber[N1]); } Console.ReadKey(); } /// <summary> /// 產生亂數。 /// </summary> /// <param name="start">起始數字。</param> /// <param name="end">結束數字。</param> static int[] GenerateRandom(int start, int end) { int iLength = end - start + 1; int[] arrList = new int[iLength]; for (int N1 = 0; N1 < iLength; N1++) { arrList[N1] = N1 + start; } arrList = Shuffle<int>(arrList); return arrList; } //洗牌。 static T[] Shuffle<T>(IEnumerable<T> values) { List<T> list = new List<T>(values); T tmp; int iS; Random r = new Random(); for (int N1 = 0; N1 < list.Count; N1++) { iS = r.Next(N1, list.Count); tmp = list[N1]; list[N1] = list[iS]; list[iS] = tmp; } return list.ToArray(); } }
結果輸出:
Code 下載 : TestRandom.rar
三小俠 小弟獻醜,歡迎指教