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

.Net技术 码拜 4年前 (2016-02-24) 737次浏览
求问这个随机数生的方法不时的会报错:确保您没有无限循环或无限递归,但看不懂,问一下应当怎么样更改?

 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;
    }
解决方案

40

Process is terminated due to StackOverflowException.
进程由于堆栈溢出异常而终止。
将 Random rand = new Random(); 移到 CreateRandomNum 方法之外即可
其实即便不出现异常,你那分段连续相同的结果也是应该进行修改算法的

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C#生成随机数报错:确保您没有无限循环或无限递归
喜欢 (0)
[1034331897@qq.com]
分享 (0)