一道关于随机数问题的程序解

问题:产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。对上面生成的数组排序,需要支持升序、降序两种顺序



    public class RndNumber
    {
        int[] aRnd = null;
        int iMax;
        int iMin;
        /// <summary>
        /// Creates a new instance of RndNumber
        /// </summary>
        public RndNumber()
        {
            iMax = 100;
            iMin = 0;
            aRnd = new int[100];
            for (int i = 0; i < 100; i++)
                aRnd[i] = -1;
        }

        public void CreateRndNumber()
        {
            for (int i = 0; i < 100; i++)
            {
                int number = getRndNumber();
                if (isExist(number))
                    i--;
                else
                    aRnd[i] = number;
            }
        }

        public bool isExist(int number)
        {
            for (int i = 0; i < 100; i++)
                if (number == aRnd[i]) return true;
            return false;
        }

        public int getRndNumber()
        {
            Random rnd = new Random();
            return rnd.Next(iMin, iMax);
        }

    }

感觉效率极低,可以改进的地方,思路如下:找到一个随机数,直接放到指定下标中,如,0放入aRnd[0]中,这样排序也省略了。

///排序待续

posted on 2007-05-29 09:54  岩山藤 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/songshuqun/archive/2007/05/29/763505.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值