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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© §風過無痕§ 金牌黑马   /  2013-7-7 22:01  /  2060 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 §風過無痕§ 于 2013-7-11 17:57 编辑


怎么在一定范围内生成不重复的随机数?
        是否运用到Random类中的那个方法?

求讲解   求带注释的实例   

评分

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

查看全部评分

4 个回复

倒序浏览
List<int> ls = new List<int>();
            Random rd = new Random(unchecked((int)DateTime.Now.Ticks));//创建一个随机对象与指定的种子。
            int num = rd.Next(1, 100);//得到  1-100的整数(但是得不到100)
            bool hasNum = false;//开始时 集合中没有重复的数
            foreach (int i in ls)
            {
                if (i == num)//得到随机数与集合中的重复
                {
                    hasNum = true;
                }
            }
            if (!hasNum)
            {
                ls.Add(num);
            }
            Console.WriteLine(num);
            Console.ReadLine();

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 ﹏Lifeヽ 于 2013-7-8 09:02 编辑

用一个字典,利用字典的键的唯一性,这样的随机数不会重复:废话不多说,上代码:

Dictionary<int, int> dir = new Dictionary<int, int>();
            Random r = new Random();
            int min=1;
            int max=9;
            int N = 0;
            while (N < max )
            {
                N++;
                int a = r.Next(min, max);//产生的随机数是大于等于min小于max,//定义变量a接收产生的随机数
                if (dir.ContainsKey(a))//如果包含相同点 键,则跳出去执行下一次循环
                {
                    continue;
                }
                dir.Add(a, a);//如果没有相同的建 则 加入字典dir
            }
            foreach (KeyValuePair<int, int> key in dir)//最后使用KeyValuePair(定义或设置可检索的键值对)用foreach遍历输出字典dir的键//取值用的时候也可用这个方法~
            {
                Console.Write(key.Key+" ");
            }
            Console.ReadKey();

这样产生的随机数 是不会重复的~~

。。。希望能帮助你~

评分

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

查看全部评分

回复 使用道具 举报
你可以先定义一个泛型的只存int 类型的集合,把产生的随机数接受后用一个if语句在泛型集合里面用Contains遍历,如果泛型集合里面不存在这个随机数,则把它加入到集合里面,如果包含则不加入集合里面,继续下一次循环。

评分

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

查看全部评分

回复 使用道具 举报
把生成的随机数用一个泛型集合存储,然后下一个生成的随机数存时先遍历此集合,用contains来判断是否有这个新生成的数,思路就是这样
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马