C#无法生成随机字符串

时间:2017-05-26 21:58:53

标签: c# .net string random

我无法理解为什么C#会这样做。

这是我的代码;

private string RandomString(int length)
    {
        const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        string randomString = "";

        for(int i = 0; i < length; i++)
        {
            randomString += chars.ToCharArray()[new Random().Next(chars.ToCharArray().Length)];
        }

        return randomString;
    }

第一个结果: “wwwwwwwwwwwwwwwwwwww”

第二个结果: “ssssssssssssssssssss”

第三个结果: “mmmmmmmmmmmmmmmmmmmm”

1 个答案:

答案 0 :(得分:1)

使用new Random()生成随机数生成器时,其种子将基于当前时间,因此对于循环的每次迭代,它最终都是相同的,因为执行速度很快。相反,您需要在循环外部使用var rng = new Random(),并在循环内使用rng.Next