所有你需要做的是檢查,如果該號碼在列表中已經存在,如果是這樣得到另一個:
static void Main(string[] args)
{
ArrayList r = new ArrayList();
Random ran = new Random();
int num = 0;
for (int i = 0; i < 50; i++)
{
do { num = ran.Next(1, 51); } while (r.Contains(num));
r.Add(num);
}
for (int i = 0; i < 50; i++)
Console.WriteLine(r[i]);
Console.ReadKey();
}
編輯:這將大大增加在效益分析,防止長時間的暫停等待一個非碰撞號碼:
static void Main(string[] args)
{
List<int> numbers = new List<int>();
Random ran = new Random();
int number = 0;
int min = 1;
int max = 51;
for (int i = 0; i < 50; i++)
{
do
{
number = ran.Next(min, max);
}
while (numbers.Contains(number));
numbers.Add(number);
if (number == min) min++;
if (number == max - 1) max--;
}
for (int i = 0; i < 50; i++)
Console.WriteLine(numbers[i]);
Console.ReadKey();
}
實現看看這個算法:http://stackoverflow.com/questions/12294128/generating-random-numbers-and-inserting-into-array-without-重複 – Matheno
不要再使用'ArrayList'。當C#沒有_generics_時,它屬於過去的日子。改爲使用'List'。 –