C#生成随机数报错:确保您没有无限循环或无限递归

翟光 2016-07-02 12:27:49
求问这个随机数生的方法不时的会报错:确保您没有无限循环或无限递归,但看不懂,请问应当如何更改?
 private string CreateRandomNum(int NumCount)
{
string allChar = "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
//TODO
char[] allCharArray = allChar.ToCharArray();
string randomNum = "";
int temp = -1;
Random rand = new Random();
for (int i = 0; i < NumCount; i++)
{
if (temp < -1)
{
int k = (int)(DateTime.Now.Ticks);
rand = new Random(i * temp * (k));
}
int t = rand.Next(35);
if (temp == t)
{
return CreateRandomNum(NumCount);
}
temp = t;
randomNum += allCharArray[t];
}
return randomNum;
}
...全文
340 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
翟光 2016-07-02
  • 打赏
  • 举报
回复
引用 2 楼 yuankaiwsl 的回复:
什么情况下报错,报什么错?
这其实是一个生成验证码的asp页面,在生成验证码时有时会报错
翟光 2016-07-02
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
Process is terminated due to StackOverflowException. 进程由于堆栈溢出异常而终止。 将 Random rand = new Random(); 移到 CreateRandomNum 方法之外即可 其实即便不出现异常,你那分段连续相同的结果也是应该进行修改算法的
不是很懂,不过移到外面之后确实好了,谢谢!
巴士上的邂逅 2016-07-02
  • 打赏
  • 举报
回复
什么情况下报错,报什么错?
xuzuning 2016-07-02
  • 打赏
  • 举报
回复
Process is terminated due to StackOverflowException. 进程由于堆栈溢出异常而终止。 将 Random rand = new Random(); 移到 CreateRandomNum 方法之外即可 其实即便不出现异常,你那分段连续相同的结果也是应该进行修改算法的
xuzuning 2016-07-02
  • 打赏
  • 举报
回复
不理解?
        static void Main(string[] args)
{
for(int i=0; i<100; i++) //测试 100 遍
Console.WriteLine(CreateRandomNum(10));
}
static Random rand = new Random();
private static string CreateRandomNum(int NumCount)
{
string allChar = "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
//TODO
char[] allCharArray = allChar.ToCharArray();
string randomNum = "";
int temp = -1;
Random rand = new Random(); //如果放在里面
for (int i = 0; i < NumCount; i++)
{
if (temp < -1)
{
int k = (int)(DateTime.Now.Ticks);
rand = new Random(i * temp * (k));
}
int t = rand.Next(35);
if (temp == t)
{
return CreateRandomNum(NumCount);
}
temp = t;
randomNum += allCharArray[t];
}
return randomNum;
}
可以看到都是重复的!

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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