asp.net 无重复随机数代码

3次阅读

代码如下: /// <summary>
/// 产生无重复随机数
/// </summary>
/// <param name="num"> 个数 </param>
/// <param name="minValue"> 最小数 </param>
/// <param name="maxValue"> 最大数 </param>
/// <returns> 数组 </returns>
public int[] getNum(int num, int minValue, int maxValue)
{
Random ra = new Random(unchecked((int)DateTime.Now.Ticks));
int[] arrNum = new int[num];// 注意: 数组中各元素的初始值是 0, 当 0 在取值范围内时要另处理
int tmp = 0;
for (int i = 0; i < num; i++)
{
tmp = getRandomNum(tmp, minValue, maxValue, ra);// 取出值赋到数组中
if (Array.IndexOf(arrNum, tmp) < 0)// 判断是否存在, 不存在的话元素 tmp 的索引应为 -1
{
arrNum[i] = tmp;
}
else
{
i = i – 1;
}
}
return arrNum;
}
public int getRandomNum(int tmp, int minValue, int maxValue, Random ra)
{
tmp = ra.Next(minValue, maxValue);
return tmp;
}

正文完