黑马程序员技术交流社区

标题: 随机数生成 ArrayList使用 偶数判定 [打印本页]

作者: 爱吃桃子的猫    时间: 2014-4-26 09:06
标题: 随机数生成 ArrayList使用 偶数判定
本帖最后由 爱吃桃子的猫 于 2014-5-5 14:57 编辑

基础测试题:随机生成10个1-100之间的数放到ArrayList中,要求这10个数不能重复,并且都是偶数。
喵是小菜一枚,刚开始这个问题是利用for循环解决的,然后在网上看到了另一种用while循环解决类似问题的方法,比较了一下两种方法各有优劣,喵会继续努力,加油加油!!!
方法一:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Collections;

  6. namespace test9
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             //随机生成10个1-100之间的数放到ArrayList中,要求这10个数不能重复,并且都是偶数。
  13.             Random r = new Random();//生成随机数
  14.             ArrayList arryList = new ArrayList();
  15. for (int i = 1; i <= 10; i++)
  16.             {
  17.                 //生成1-100之间的随机数
  18.                 int number = r.Next(1, 101);
  19.                 //这是一个数,生成十个不同的随机数
  20.                 if (!arryList.Contains(number) && number % 2 == 0)//看是否包含相同的偶数
  21.                 {
  22.                     arryList.Add(number);//如果不相同且是偶数则添加随机数
  23.                 }

  24.                 else
  25.                 {
  26.                     i--;//当产生的随机数跟集合里面的数不包含时,我们要把次数减一次
  27.                 }
  28.             }
  29.             for (int j = 0; j < arryList.Count; j++)//循环遍历
  30.             {
  31.                 Console.WriteLine(arryList[j]);//向控制台输出随机数
  32.             }
  33.             Console.ReadKey();//当程序运行到这里,会停止到这里,等待用户按一个键再继续执行。
  34.         }
  35.     }
  36. }
复制代码

方法二:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Collections;

  6. namespace test9
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             //随机生成10个1-100之间的数放到ArrayList中,要求这10个数不能重复,并且都是偶数。
  13.             Random r = new Random();//生成随机数
  14.             ArrayList arryList = new ArrayList();
  15.             while (true)
  16.             {
  17.                 if (arryList.Count == 10)
  18.                     break;
  19.                 int num = r.Next(1, 101);
  20.                 if (!arryList.Contains(num) && num % 2 == 0)
  21.                 {
  22.                     arryList.Add(num);
  23.                 }
  24.             }
  25.             foreach (var v in arryList)//foreach遍历
  26.                 Console.WriteLine(v);
  27.             Console.ReadKey();
  28.         }
  29.     }
  30. }
复制代码




作者: 许庭洲    时间: 2014-5-25 20:10
值得学习ing!
作者: 赵贺景    时间: 2014-5-26 18:47
for循环哪里,很有趣啊,是偶数且不相同就放进去,不是就是再次增加循环次数 直到挑出十个 终止循环
作者: 黑马.net    时间: 2014-5-26 21:35
不错,猫猫。
作者: continue     时间: 2014-5-26 22:42
我觉得这种情况肯定while的效率要高点,至少从代码量上来说,少一些
作者: continue     时间: 2014-5-26 22:45
我觉得可以把for中第三个条件i+给留个空【最好还是不要这样做】,然后把if下面的else给干掉,把i++放到if里面去,
作者: yllogininbh    时间: 2014-6-1 14:41
顶1下                     
作者: 唐枫    时间: 2015-5-4 23:08
好给力!!!




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