黑马程序员技术交流社区

标题: 随机产生1-100的随即数插入到数组中,数字不能有重复 [打印本页]

作者: 吴步兵    时间: 2012-11-10 12:45
标题: 随机产生1-100的随即数插入到数组中,数字不能有重复
要求:一个数组,长度为100。随机产生1-100的随即数插入到数组中,数字不能有重复。如何实现?
实现的方法很多,自己也试着写了一个。代码如下:
  1. static int[] GetNumbers()
  2. {
  3. int[] numbers = new int[100];
  4. //先取出数组
  5. for (int i = 1; i <= 100; i++)
  6. {
  7. numbers[i-1] = i;
  8. }
  9. //再进行随机排列
  10. Random ranom = new Random();
  11. for (int i = 0; i < 100; i++)
  12. {
  13. int position = ranom.Next(i, 100);//从数组中取i-99之间的一个随机索引
  14. int temp = numbers[i];
  15. numbers[i] = numbers[position];
  16. numbers[position] = temp;
  17. }
  18. return numbers;
  19. }
复制代码
大家都来试着写写,一起找更高效的算法。

作者: 许庭洲    时间: 2012-11-10 20:16
值得学习ing!
作者: 王继光    时间: 2012-11-11 17:50
            int[] arr = new int[100];

            Random ranom = new Random();
            int temp = -1;
            for (int i = 0; i < 100; i++)
            {
                //如果获得的随机数已经包含在该数组里 那么重新获得随机数
                while( arr.Contains(temp) || temp == -1)
                {
                    temp = ranom.Next(1, 101);
                }

                arr[i] = temp;

            }



我也写了个  比较直接。
作者: z983546935    时间: 2012-11-11 18:26
我也手写一个吧。

List<int> lists = new List<int>();
Random ranom = new Random();
while(lists.Count!=100){
   int tmp = ranom.Next(1, 101);
   if(!list.Contains(tmp)){
        lists.Add(tmp);
   }
}


作者: z983546935    时间: 2012-11-11 18:28
不好意思,题目没看清,是数组,  最后ToArray() 也可以的
作者: 郭会茹    时间: 2012-11-14 21:38

  1.             ArrayList arrayList = new ArrayList();
  2.             Random r = new Random();
  3.             int i = 0;
  4.             while (i<100)
  5.             {
  6.                 int num = r.Next(1, 101);
  7.                 if (arrayList.Contains(num))
  8.                 {
  9.                     continue;
  10.                 }
  11.                 else
  12.                 {
  13.                     arrayList.Add(num);
  14.                     i++;
  15.                 }
  16.             }

  17.             for (int j= 0; j< 100; j++)
  18.             {
  19.                 Console.WriteLine(arrayList[j]);
  20.             }
  21.             Console.ReadKey();
复制代码
没加注释{:soso_e106:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2