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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 苟于伟 中级黑马   /  2013-4-23 10:30  /  3401 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

随机生成10个1-100之间的数放到ArrayList中,要求这10个数不能重复,并且都是偶数。



我是0基础的,通过Random只能new一个数,而不能产生一个数组,求高人指点。。。

例如:
  1. static void Main(string[] args)
  2.         {
  3.             Random r = new Random();//通过Random方法可以产生随机数
  4.             while (true)
  5.             {
  6.                 int i = r.Next(1, 7);//产生的随机数永远大于等于最小值,小于最大值
  7.                 Console.WriteLine(i);
复制代码

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

9 个回复

倒序浏览
定义一个数组。然后用for循环10次。
回复 使用道具 举报
  1.      ArrayList list = new ArrayList();            
  2.             Random rd = new Random();
  3.             //接受随机数对象产生的数
  4.             int num;
  5.             //判断是否在ArrayList找到相同的数字,找到则为true,否则为false;
  6.             bool find = false;
  7.             //判断list里面是不是已经有10个数了,够10个数字则不在运行
  8.             while(list.Count<10)
  9.             {
  10.                 //产生随机数
  11.                  num = rd.Next(1, 101);
  12.                 //判断概数是否为偶数
  13.                  if (num % 2 == 0)
  14.                  {
  15.                      //查找该数是否已存在数组list中
  16.                      for (int j= 0; j < list.Count; j++)
  17.                      {
  18.                          if (num == Convert.ToInt32( list[j]))
  19.                          {
  20.                              find = true;
  21.                              break;
  22.                          }
  23.                      }
  24.                      //不存在,则添加到数组list去
  25.                      if (!find)
  26.                      {
  27.                          list.Add(num);
  28.                          find = false;
  29.                      }
  30.                  }
  31.             }
  32.             Console.WriteLine("随机产生的10个偶数如下:");
  33.             for (int i = 0; i < list.Count; i++)
  34.             {
  35.                 Console.Write("{0}  ",list[i]);
  36.             }
  37.             Console.ReadKey();
复制代码
这是我刚才写的程序  你看一下  希望对你有帮助

有疑问的地方 可以一起探讨

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
看看我刚写的吧。直接写的。也没写什么方法,怕你看不懂,耦合的地方暂时先忽略不计吧
  1. static void Main(string[] args)
  2.         {
  3.             ArrayList list = new ArrayList();
  4.             #region 初始集合时,往里面加一个偶数
  5.             while (true)
  6.             {
  7.                 Random ran = new Random();
  8.                 int x = ran.Next(1, 101);
  9.                 if (x % 2 == 0)
  10.                     list.Add(x);
  11.                 break;
  12.             }
  13.             #endregion

  14.             #region 循环添加不同偶数
  15.             while (true)
  16.             {
  17.                 if (list.Count == 10)//当集合内数字为10跳出循环
  18.                     break;
  19.                 Random ran1 = new Random();
  20.                 int y = ran1.Next(1, 101);
  21.                 if (!list.Contains(y) && (y % 2 == 0))//当集合内不包含这个随机数企鹅这个数字为偶数时添加到集合内
  22.                     list.Add(y);
  23.                 else
  24.                     continue;

  25.             }
  26.             #endregion
  27.             foreach (int i in list)
  28.             {
  29.                 Console.WriteLine(i);
  30.             }
  31.             Console.ReadKey();
  32.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
  1. static void Main(string[] args)
  2.         {
  3.             //随机生成10个1-100之间的数放到ArrayList中,要求这10个数不能重复,并且都是偶数。
  4.             int[] ArrayList = new int[10];
  5.             Random r = new Random();
  6.             for (int i = 0; i < 10; i++)
  7.             {
  8.                 while (ArrayList[i] == 0)
  9.                 {
  10.                     int num = r.Next(1, 101);     //产生随机数
  11.                     if (num % 2 == 0)//判断是否为偶数
  12.                     {
  13.                         for (int j = 0; j < i; j++)//判断新产生的随机数和之前产生的是否重复
  14.                         {
  15.                             if (num == ArrayList[j])
  16.                             {
  17.                                 break;
  18.                             }
  19.                         }
  20.                         ArrayList[i] = num;//既是偶数又不和前面的重复时,加入数组中
  21.                     }
  22.                     else
  23.                     {
  24.                         continue;
  25.                     }
  26.                 }
  27.             }
  28.             foreach (int i in ArrayList)//循环输出数组的值
  29.             {
  30.                 Console.WriteLine(i);
  31.             }


  32.                 Console.ReadKey();
  33.         }
复制代码
希望对你有用

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
风雪再现 发表于 2013-4-23 13:18
希望对你有用

可还有重复的数啊
回复 使用道具 举报
苟于伟 发表于 2013-4-24 10:17
可还有重复的数啊

我测试过,没有重复数的
回复 使用道具 举报
陈晖 中级黑马 2013-4-24 11:17:51
8#
用HashTable来存放,达到是个停止可以避免重复这个漏洞。
回复 使用道具 举报

        static void Main(string[] args)
        {
            //随机生成10个1-100之间的数放到ArrayList中,要求这10个数不能重复,并且都是偶数。

           
                //定义一个可变数组
                ArrayList arr = new ArrayList();
             //定义随机数实例r
                Random r = new Random();
                int sum = 0;
                //while循环 用于获取 10个不同的随机数
                while (sum < 10)
                {
                    // 定义变量 number 接收随机数
                    int number = r.Next(1, 100);
                    // if 用于偶数的过滤
                    if (number % 2 == 0)
                    {
                        //只有第一次 while 循环 arr 中 肯定不会有 重复,直接将 number 加进 arr
                        if (sum <= 0)
                        {
                            arr.Add(number);
                            sum++;
                        }
                        else // 第一次以后的 循环 存在 重复的可能性
                        {
                            //便利 arr 中的每一个元素
                            for (int i = 0; i < arr.Count; i++)
                            {
                                // 如果 本次循环产生的随机数在 arr 中 已有 则 不在添加到 arr
                                if (number == Convert.ToInt32(arr[i]))
                                {
                                    // 存在重复  用 goto 跳转到 aa 标签,不在执行 添加 语句 arr.Add(number);
                                    goto aa;
                                }

                            }
                        
                            arr.Add(number);
                            sum++;
                        aa: ;


                        }


                    }

                }
                // 遍历输出 arr 中的元素
                foreach (int read in arr)
                {
                    Console.Write(read+" ");
           
                }
               
            
        }
回复 使用道具 举报

我测试了一下有重复的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马