C# 用户输入从C中的数组中选择字母和数字的数量

C# 用户输入从C中的数组中选择字母和数字的数量,c#,arrays,C#,Arrays,我正在尝试学习C语言,我正在制作一个密码生成器。我已经设置了一个数组,其中包含我希望程序使用的字母和数字 String alphabet[] = {"abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"}; 我试图在for循环中编写一段代码,它将随机选取用户输入的任意长度的字母或数字 举例 字母长度为y 我就是不知道如何让它在循环中循环选择随机字母。你应该在这里使用随机字母。其思想是从用户那里获取密码长度,设置允许的字符

我正在尝试学习C语言,我正在制作一个密码生成器。我已经设置了一个数组,其中包含我希望程序使用的字母和数字

String alphabet[] = {"abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"};
我试图在for循环中编写一段代码,它将随机选取用户输入的任意长度的字母或数字

举例 字母长度为y


我就是不知道如何让它在循环中循环选择随机字母。

你应该在这里使用随机字母。其思想是从用户那里获取密码长度,设置允许的字符,然后使用Random生成密码

String password = "";
for(int i = 0; i < USERINPUTLENGTH; i++)
{
    //Get Random Char
    String randomChar = alphabet[Random.next(alphabet.length)];
    password += randomChar;
}
public static string CreatePassword(int passwordLength)
    {
        const string allowedChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789!@$?_-";
        char[] chars = new char[passwordLength];
        Random rd = new Random();
        for (int i = 0; i < passwordLength; i++)
            chars[i] = allowedChars[rd.Next(0, allowedChars.Length)];
        return new string(chars);
    }

您不需要在字母表上循环,但需要在生成的密码中为每个字符循环一次

string GeneratePassword(int pwLength)
{
    string alphabet = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";

    var builder = new StringBuilder();
    var random = new Random();

    for(var i = 0; i < pwLength; i += 1) {
        builder.Append(alphabet[random.Next(alphabet.Length)]);
    }

    return builder.ToString();
}

您可以使用无限随机字符生成器:

IEnumerable<char> GetRandomChars()
{
    string alphabet = 
        "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    Random random = new Random();

    while (true)
        yield return alphabet[random.Next(alphabet.Length)];
}

使用System.Random拾取索引,循环是将索引收集到System.Text.StringBuilder中。不幸的是,您必须为我沉默,因为我不知道有人是如何做到的,但我建议您首先自己尝试,通常情况下,问题应该显示您的尝试,或者至少对问题有一些了解。对于准备使用的代码,有……您不需要alphabet.Length-1,因为绑定是排他性的。如果能够准确地解释此代码是如何工作的,这会有所帮助。
var result =  new String(GetRandomChars().Take(length).ToArray());