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;
}
5 个解决方案
#1
Process is terminated due to *Exception.
进程由于堆栈溢出异常而终止。
将 Random rand = new Random(); 移到 CreateRandomNum 方法之外即可
其实即便不出现异常,你那分段连续相同的结果也是应该进行修改算法的
进程由于堆栈溢出异常而终止。
将 Random rand = new Random(); 移到 CreateRandomNum 方法之外即可
其实即便不出现异常,你那分段连续相同的结果也是应该进行修改算法的
#2
什么情况下报错,报什么错?
#3
不是很懂,不过移到外面之后确实好了,谢谢!
#4
这其实是一个生成验证码的asp页面,在生成验证码时有时会报错
#5
不理解?
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;
}
#1
Process is terminated due to *Exception.
进程由于堆栈溢出异常而终止。
将 Random rand = new Random(); 移到 CreateRandomNum 方法之外即可
其实即便不出现异常,你那分段连续相同的结果也是应该进行修改算法的
进程由于堆栈溢出异常而终止。
将 Random rand = new Random(); 移到 CreateRandomNum 方法之外即可
其实即便不出现异常,你那分段连续相同的结果也是应该进行修改算法的
#2
什么情况下报错,报什么错?
#3
不是很懂,不过移到外面之后确实好了,谢谢!
#4
这其实是一个生成验证码的asp页面,在生成验证码时有时会报错
#5
不理解?
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;
}