如何使用递归创建随机字符串列表?

时间:2010-08-26 06:36:41

标签: c# string

我想生成一个只包含字母数字字符的随机字符串列表。字符串的长度可以是任何大小。有没有办法使用递归来做到这一点?

2 个答案:

答案 0 :(得分:3)

这里不需要递归。只需在字符串中写下您想要的字符,例如:

string allowedCharacters = "abcdefghijklmnopqrstuvwxyz0123456789";

然后你可以随便从中抓取字符:

Random rnd = new Random();
string randomString(int length)
{
    int num = allowedCharacters.Length;
    return new string(Enumerable.Range(0, length)
           .Select(i => allowedCharacters[rnd.Next(0, num)])
           .ToArray());
}

最后,您可以使用它来生成随机长度的字符串:

// Outputs a random string of a length between 5 and 49 characters
Console.WriteLine(randomString(rnd.Next(5, 50)));

答案 1 :(得分:3)

由于您明确要求递归,因此这是一个递归解决方案。但这很慢。

static string allowedCharacters = "abcdefghijklmnopqrstuvwxyz0123456789";
static Random rnd = new Random();
static string randomString(int length)
{
    if (length == 0)
        return "";
    return allowedCharacters[rnd.Next(0, allowedCharacters.Length)]
           + randomString(length - 1);   // This is the recursive call.
}

现在您可以使用它来生成随机长度的字符串:

// Outputs a random string of a length between 5 and 49 characters
Console.WriteLine(randomString(rnd.Next(5, 50)));