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;
}
结果: