将不同的随机字符组合成一个字符串

我正在编写一个C#应用程序,该应用程序应生成一个随机密码。我的想法是使用“随机”生成10个不同的字符并将它们组合成1个字符串。

所以我做了这个方法,它返回一个随机的Char:

public static string RandomChar()
{
    Random random = new Random();
    var chars ="$%#@!*abcdefghijklmnopqrstuvwxyz1234567890?;:ABCDEFGHIJKLMNOPQRSTUVWXYZ^&".ToCharArray();
    string indexValue = chars.Getvalue(random.Next(chars.Length)).ToString();           
    return indexValue;
}

此方法到目前为止可以正常工作。

然后,我执行以下方法来生成具有10个随机字符的单个字符串:

public static string RandomPwd()  
{
    string Pwd = "";
    for(int i = 0; i < 11; i++)
    {
        Pwd= Pwd + RandomChar();
    }
    return Pwd;
}

然后我仅从onClick事件中调用RandomPwd()方法。 (我不认为必须显示此onClick事件,因为它唯一要做的就是调用RandomPwd()。)

奇怪的是,如果我使用

上的断点启动应用程序
string a = RandomPwd();

“ a”将始终是10个字符的SAME字符字符串,例如“ UUUUUUUUUUU”。

但是如果我在以下位置设置断点:

    for(int i = 0; i < 11; i++)
    {
        Pwd= Pwd + RandomChar();
    }
    return Pwd;

然后我看到Pwd充满了10个不同的字符。而且,如果我继续浏览,还会发现

string a = RandomwPwd();

现在是10个字符长的不同字符。

因此,只要我手动完成操作,该应用程序就可以正常运行,但是,如果我不这样做,则不会采用其他随机数。

我已经在Google和此处搜索了该问题,但是找不到任何可以解决我的问题的东西。

也许其他人以前曾经经历过,并会分享他的解决方案。

非常感谢!

format_88 回答:将不同的随机字符组合成一个字符串

您需要从方法内部获取Random random = new Random();

在紧密循环中调用的

new Random().Next(...)通常会产生相同的数字。


for(int i = 0; i< 10; i++)
{
     Random random = new Random();
     Console.WriteLine(random.Next(0,100));
}

产生

17
17
17
17
17
17
17
17
17
17
本文链接:https://www.f2er.com/3159606.html

大家都在问