C#产生随机数 不重复

Random r = new Random();
int i1 = r.Next(5);
上面的是产生1个,0-5的随机数
但是我现在想要连续产生3个0-5之间的数而且不能重复。如何写代码?

 

private const int Num = 3; //数目
private const int MaxValue = 5; //最大数
private const int MinValue = 1; //最小数



public int[] sort(int[] num)
{
int i,j ,temp;
int n = num.Length;
for (i = 0; i < n - 1; i++)
{
for (j = i + 1; j < n; j++) /*注意循环的上下限*/
{
if (num[i] > num[j])
{
temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
}
return num;
}

public int getNum(int[] arrNum, int tmp, int minValue, int maxValue, Random ra)
{
int n = 0;
while (n <= arrNum.Length - 1)
{
if (arrNum[n] == tmp) //利用循环判断是否有重复
{
tmp = ra.Next(minValue, maxValue); //重新随机获取。
getNum(arrNum, tmp, minValue, maxValue, ra);//递归:如果取出来的数字和已取得的数字有重复就重新随机获取。
}
n++;
}
return tmp;
}

public string getRandomNum(int num, int minValue, int maxValue)
{
Random ra = new Random(unchecked((int)DateTime.Now.Ticks));
string strNum = "";
int[] arrNum = new int[num];
int tmp = 0;

for (int i = 0; i <= num - 1; i++)
{
tmp = ra.Next(minValue, maxValue); //随机取数
arrNum[i] = getNum(arrNum, tmp, minValue, maxValue, ra); //取出值赋到数组中
}

this.sort(arrNum);

for (int i = 0; i <arrNum.Length; i++)
{

string s = Convert.ToString(arrNum[i]);

strNum = strNum + s + " ";
}
return strNum;
}

this.getRandomNum(redNum, redMinValue, redMaxValue).Trim();

输出这个值,调用这个方法就可以了,总结了这些方法你以后不关多少范围和几个不重复只要改最上面3个变量就行了。

 

 

没有进行测试,仅收藏..

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值