换个思路,将1~100放入集合,从中选取数字放入结果数组中,然后将已选过的数字从集合中移除。这样每一次随机都能选到数字,而不会多次抛弃随机出来的值。
int[] num = new int[100]; //定义数组
for (int i = 1; i <= 100; i++){
num[i - 1] = i; //给数组赋值
}
ArrayList al = new ArrayList(num); //定义ArrayList
Random r = new Random(); //定义随机数
for (int i = 0; i < 100; i++)
{
int pos = r.Next(al.Count); //随机选择下标
num[i] = Convert.ToInt32(al[pos]); //ArrayList中所选下标对应的数字存入数组
al.RemoveAt(pos); //移除ArrayList中的该数字
}
for (int i = 0; i < 100; i++)Console.Write(num[i].ToString() + " ");