前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >生成不重复的随机数算法

生成不重复的随机数算法

作者头像
跟着阿笨一起玩NET
发布2018-09-18 16:08:32
1.5K0
发布2018-09-18 16:08:32
举报

本文转载http://blog.csdn.net/zhoufoxcn/article/details/5825093#comments

有时我们需要从指定的数值范围内随机产生一个数,利用这个伪随机数去实现自己想要实现的东西。在园子里看了不少好文章和代码,发现zhoufoxcn实现这个算法的思路很好,尤其是第三个方法,

效率较好,便把这一skill记载了下来,虽然我们可以用诸如Random rand = new Random(Guid.NewGuid().GetHashCode()); int value = rand.next(intMin, intMax)代码实现,但程序员的最大

代码语言:javascript
复制
乐趣在于自己动脑,用不同的思路写出不同的算法。
代码语言:javascript
复制
  代码如下:
代码语言:javascript
复制
View Code View Code 

static List<int> GenerateNumber1()
        {
            List<int> result =new List<int>(100);
            Random random =new Random();
            int temp =0;
            while (result.Count <100)
            {
                temp = random.Next(1, 34);
                if (!result.Contains(temp))
                {
                    result.Add(temp);
                }
            }
            return result;

        }

        static List<int> GenerateNumber2()
        {
            List<int> container =new List<int>(33);
            List<int> result =new List<int>(6);
            Random random =new Random();
            for (int i =1; i <=33; i++)
            {
                container.Add(i);
            }

            int index =0;
            int value =0;
            for (int i =1; i <=6; i++)
            {
                index = random.Next(0, container.Count);
                value = container[index];
                result.Add(value);
                container.RemoveAt(index);
            }

            return result;
        }

        staticint[] GenerateNumber3()
        {
            // 用于存放1到33这33个数
int[] container =newint[33];
            //用于保存返回结果 
int[] result =newint[6];
            Random random =new Random();
            for (int i =0; i <33; i++)
            {
                container[i] = i +1;
            }
            int index =0;
            int value =0;
            for (int i =0; i <6; i++)
            {
                //从[1,container.Count + 1)中取一个随机值,保证这个值不会超过container的元素个数   
                index = random.Next(0, container.Length - i);
                //以随机生成的值作为索引取container中的值   
                value = container[index];
                //将随机取得值的放到结果集合中   
                result[i] = value;
                //将刚刚使用到的从容器集合中移到末尾去   
                container[index] = container[container.Length - i -1];
                //将队列对应的值移到队列中   
                container[container.Length - i -1] = value;  

            }
            return result;
        }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013-04-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档