摘要:[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
三小俠 小弟獻醜,歡迎指教
