轉貼自.NET隨筆 http://www.dotblogs.com.tw/atowngit/Default.aspx
Interduction
可能有時候,我們需要再連續的數字中(如 5~19),亂數取出,但又不重複。
小弟我,自己做個練習。網路上關於﹝產生不重覆的亂數﹞方法很多,先列出一些參考的好文。
- Random 類別
- [VBA] 演算法 - 亂數 不重複 - VB/ VBA/ C#/ Java/ C++ 語言學習筆記 美妙人生- 點部落
-
JavaScript的shuffle演算法(發亂數不重複)南史氏言
Example
01 |
class Program { |
02 |
static void Main( string [] args) { |
03 |
int [] arrNumber = GenerateRandom(3, 18); |
04 |
05 |
for ( int N1 = 0; N1 < arrNumber.Length; N1++) { |
06 |
Console.Write( " " + arrNumber[N1]); |
07 |
} |
08 |
Console.ReadKey(); |
09 |
} |
10 |
11 |
/// <summary> |
12 |
/// 產生亂數。 |
13 |
/// </summary> |
14 |
/// <param name="start">起始數字。</param> |
15 |
/// <param name="end">結束數字。</param> |
16 |
static int [] GenerateRandom( int start, int end) { |
17 |
int iLength = end - start + 1; |
18 |
int [] arrList = new int [iLength]; |
19 |
for ( int N1 = 0; N1 < iLength; N1++) { |
20 |
arrList[N1] = N1 + start; |
21 |
} |
22 |
23 |
arrList = Shuffle< int >(arrList); |
24 |
return arrList; |
25 |
} |
26 |
27 |
//洗牌。 |
28 |
static T[] Shuffle<T>(IEnumerable<T> values) { |
29 |
List<T> list = new List<T>(values); |
30 |
T tmp; |
31 |
int iS; |
32 |
Random r = new Random(); |
33 |
for ( int N1 = 0; N1 < list.Count; N1++) { |
34 |
iS = r.Next(N1, list.Count); |
35 |
tmp = list[N1]; |
36 |
list[N1] = list[iS]; |
37 |
list[iS] = tmp; |
38 |
} |
39 |
return list.ToArray(); |
40 |
} |
41 |
} |
結果輸出:
全站熱搜
留言列表