转自:http://blog.csdn.net/yanghua_kobe/article/details/6253227
这是一道面试题:
参考网上3种方法,C#实现:
方法一:
- #region 方法一
- //存放1-100个数
- int[] num = new int[100];
- //indexNum[0]=1;...indexNum[99]=100;(不重复)
- for (int i = 0; i < num.Length; i++)
- {
- num[i] = i + 1;
- }
- Random r = new Random();
- //存放最终结果
- int[] result = new int[100];
- int max = 100;//设置随机数最大值
- for (int j = 0; j < result.Length; j++)
- {
- //计算出随机产生的数组索引(0-99) 注:上界值:100 无法取到
- int index = r.Next(0, max);
- //取出该索引位置所存的数
- result[j] = num[index];
- //用最后一个数替换掉已被放入result中的数
- //这样num数组中从0到max-1又都是未被存放入result而且不重复的数了
- num[index] = num[max - 1];
- //随机产生的数组索引最大值减一
- max--;
- }
- //打印结果
- for (int i = 0; i < 100; i++)
- {
- if (i % 10 == 0)
- {
- Console.WriteLine("/r/n");
- }
- Console.Write(result[i] + " ");
- }
- Console.Read();
- #endregion