随机数的问题

jiayun1 2010-11-08 01:57:44
Random r = new Random();
int i = r.Next(1000, 9999);

请问如何改造下,生成唯一的随机数呢?
比如1000已经出过了,以后就不出了。
...全文
161 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
paual779 2010-11-08
  • 打赏
  • 举报
回复
思路:
1.产生第一个后, 记忆该随机数(一般使用数组 或List)
2.产生第二个时, 先判断记忆里有没有第二个随机数,如果没有,直接记忆;如果有,再次取得随机数。再进行是否存在处理。
3.产生第三个时, 与第2步处理方式相同。

提醒: 如果是一次性取得n个不重复的随机数,网上有很多优化方案,可以参考参考。
liyoubaidu 2010-11-08
  • 打赏
  • 举报
回复
加个timetick参数看看。
  • 打赏
  • 举报
回复
用泛泛型类List<int>记录一下出现过的数字就行了,沙发正解
q107770540 2010-11-08
  • 打赏
  • 举报
回复

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

七爷 2010-11-08
  • 打赏
  • 举报
回复

//最终调用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;

}

}
sxn10050812 2010-11-08
  • 打赏
  • 举报
回复
用动态数组把随机产生过的数字保存起来,在显示时加一个判断
首先引入命名空间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);
}
damjmk2 2010-11-08
  • 打赏
  • 举报
回复
如果不是非要用数字的话,可以考虑用Guid
Guid id = Guid.NewGuid();
shaoliang520xi 2010-11-08
  • 打赏
  • 举报
回复
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);

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧