List<int> list = new List<int>();//保留上次随机的数字 Random r = new Random(); int i = r.Next(1000, 9999); if (list.Contains(i)) { //如果存在了,就从新生成下 i = r.Next(1000, 9999); } list.Add(i);
如果不是非要用数字的话,可以考虑用Guid Guid id = Guid.NewGuid();
用动态数组把随机产生过的数字保存起来,在显示时加一个判断 首先引入命名空间using System。colletions; Arraylist al=new arraylist(); Random r=new Random(); int i=r。Next(1000,9999); if(al。contains(i)==false) { al。add(i); console.read(i); }
//最终调用getRandomNum public int[] getRandomNum(int num, int minValue, int maxValue) { Random ra = new Random(unchecked((int)DateTime.Now.Ticks)); 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); //取出值赋到数组中 } return arrNum; } 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; } }
Random r = new Random();
int i = r.Next(1000, 9999);
if (list.Contains(i))
{
//如果存在了,就从新生成下
i = r.Next(1000, 9999);
}
list.Add(i);
Guid id = Guid.NewGuid();
首先引入命名空间using System。colletions;
Arraylist al=new arraylist();
Random r=new Random();
int i=r。Next(1000,9999);
if(al。contains(i)==false)
{
al。add(i);
console.read(i);
}
//最终调用getRandomNum
public int[] getRandomNum(int num, int minValue, int maxValue)
{ Random ra = new Random(unchecked((int)DateTime.Now.Ticks)); 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); //取出值赋到数组中 } return arrNum; }
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; } }
void Main()
{
Console.WriteLine(GetNum());
}
string GetNum()
{
string s=Regex.Match(Guid.NewGuid().ToString().Replace("-",""),@"(\d{5})").Value;
if(!string.IsNullOrEmpty(s))
{
return s;
}
else return GetNum();
}
http://topic.csdn.net/u/20100809/11/ca61b3ad-5806-4cf3-bc5c-33795738b2a6.html
1.产生第一个后, 记忆该随机数(一般使用数组 或List)
2.产生第二个时, 先判断记忆里有没有第二个随机数,如果没有,直接记忆;如果有,再次取得随机数。再进行是否存在处理。
3.产生第三个时, 与第2步处理方式相同。提醒: 如果是一次性取得n个不重复的随机数,网上有很多优化方案,可以参考参考。