码迷,mamicode.com
首页 > Windows程序 > 详细

C#作业

时间:2015-04-11 11:54:26      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:.net framework   random   遍历   asp.net   c#   

       从n个数中随机选取m(m<=n)个不重复的数并且对选取的m个数进行排序

       在老师布置作业的时候就想到要用数组的一些知识:

       (1) Array(包含AraayList,Hashtable等一些特殊的数组)提供了Sort方法来进行排序,但它常与Reverse方法(反转数组中元素的顺序)一起配合使用。

            Sort方法,接受一个数组,将其实现升序,格式为:Array.Sort(数组)

            Reverse方法,接受一个数组,将其反转数组中元素的顺序,格式为:Array.Reverse(数组)    

       (2)ArrayList(动态数组)提供了两种方法用于向ArrayList添加元素,即Add和AddRange。

           Add方法将单个元素添加到列表的尾部,其格式为:ArrayList 对象.Add(要添加的值)

           AddRange方法获取一个实现ICollection接口的集合实例,并将这个集合实例按顺序添加到列表的尾部,其格式为:ArrayList 对象.AddRange(要添加的数组)

       (3)Array提供的数组元素的遍历,最好使用foreach语句

       (4)还需要用到一个新的知识点就是C#Random()随机函数,Random.Next() 返回非负随机数。

       随机数的使用很普遍,可用它随机显示图片,用它防止无聊的人在论坛灌水还可以用来加密信息等等。本文讨论如何在一段数字区间内随机生成若干个互不相同的随机数,比如在从120间随机生成6个互不相同的整数,并通过此文介绍Visual c#中随机数的用法。.net.Frameword中提供了一个专门产生随机数的类System.Random此类默认情况下已被导入,编程过程中可以直接使用。我们知道,计算机并不能产生完全随机的数字,它生成的数字被称为伪随机数,它是以相同的概率从一组有限的数字中选取的,所选的数字并不具有完全的随机性,但就实用而言,其随机程度已经足够了。

        第一次尝试代码

using System;
using System.Collections;//使用ArrayList类需要引入的命名空间
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Text
{
    class Program
    {
        static void Main(string[] args)
        {
            ArrayList al = new ArrayList();//创建一个ArrayList类的对象al
            Random rm = new Random();//创建一个Random类的对象rm
            for (int i = 0; i < 10; i++)
            {
                int sjs = rm.Next(1,50);//调用Random类的随机选取非负数方法
                al.Add(sjs);//调用ArrayList类的元素末尾添加方法
            }
            al.Sort();//数组元素的升序排序
            foreach (int temp in al)
            {
                Console.WriteLine(temp);
            }
            Console.ReadLine();
        }
    }
}

         输出的结果为:

技术分享

 

技术分享

        从上面输出的结果来看输出的10个数还是有重复的,虽然有时候输出的是不重复的,但是如果一定要输出不重复的10个随机数就要考虑怎么去除重复的数并进行再次的选取。

        第二次代码尝试

using System;
using System.Collections;//使用ArrayList类需要引入的命名空间
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Text
{
    class Program
    {
        static void Main(string[] args)
        {
            ArrayList al = new ArrayList();
            Random rm = new Random();
            int i = 0;
            while (i < 10)
            {
                int sjs = rm.Next(1, 50);
                bool IsExist = false;//定义一个布尔型变量并且赋值为false
                foreach (int item in al)//判断选取的随机数是否相同
                {
                    if (sjs == item)
                    {
                        IsExist = true;//如果相同就终止添加到选取数组的末尾
                        break;
                    }
                    else
                    {
                        IsExist = false;//如果不相同就添加到选取数组中的末尾
                    }
                }
                if (IsExist)
                {
                    continue;
                }
                else
                {
                    al.Add(sjs);
                    i++;
                }
            }
            al.Sort();
            foreach (int temp in al)
            {
                Console.WriteLine(temp);
            }
            Console.ReadLine();
        }
    }
}

        输出的结果为:

技术分享

 

技术分享

 

         再一次代码输出运行了几次终于是没有重复的了,记得老师还讲了两种方法,有时间了再进行补充。


 

 

 

 

        

      

 

      

C#作业

标签:.net framework   random   遍历   asp.net   c#   

原文地址:http://blog.csdn.net/erlian1992/article/details/44992657

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!