C# 获取指定范围的随机数

 

1.从指定范围内随机生成几个随机数

 //需要生成几个随机数
            int nQty = int.Parse(txtQty.Text);
            //最大值
            int nInsptQty = int.Parse(txtInsptQty.Text);

            Hashtable hashtable = new Hashtable();
            Random rm = new Random();
            int RmNum = nQty;

            List<int> list = new List<int>();
            for (int i = 0; hashtable.Count < RmNum; i++)
            {
                int nValue = rm.Next(nInsptQty);
                if (!hashtable.ContainsValue(nValue) && nValue != 0)
                {
                    hashtable.Add(nValue, nValue);

                    list.Add(nValue);
                }
            }

结果:

2.将数字拆分后在生成随机数

 

如:数字20生成两个随机数,则第一组随机数范围在[1-10],第二组范围在[11-20]

    List<int> list = new List<int>();

                int nInsptQty = int.Parse(txtInsptQty.Text);
                int nQty = int.Parse(txtQty.Text);

                //先将数字(最大化)平均拆分
                var nArray = new int[nQty];
                var avg = nInsptQty / nQty;
                var another = nInsptQty % nQty;
                for (var i = 0; i < nQty; i++)
                {
                    nArray[i] = avg;
                    if (i < another)
                    {
                        nArray[i] += 1;
                    }
                }

            
                Random rm = new Random();
                int nSum = 0;
                int nMin = 1;
                int nMax = 0;
                for (int i = 0; i < nQty; i++)
                {
                    //最大值
                    nMax = nSum + nArray[i] ;
                    //获取随机数
                    int nValue = rm.Next(nMin, nMax+1);
                    txtResult.AppendText(nValue.ToString() + Environment.NewLine);

                    list.Add(nValue);
                    nSum += nArray[i];
                    nMin = nSum+1;
                }

结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值