A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

要求:一个数组,长度为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. }
复制代码
大家都来试着写写,一起找更高效的算法。

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

5 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
            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;

            }



我也写了个  比较直接。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
我也手写一个吧。

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);
   }
}

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
不好意思,题目没看清,是数组,  最后ToArray() 也可以的
回复 使用道具 举报

  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:}

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马