Как создать случайный список строк с помощью рекурсии? - PullRequest
6 голосов
/ 26 августа 2010

Я хочу создать случайный список строк, содержащих только буквенно-цифровые символы. Длина строки может быть любого размера. Есть ли способ сделать это с помощью рекурсии?

Ответы [ 2 ]

3 голосов
/ 26 августа 2010

Поскольку вы явно просили рекурсию, вот рекурсивное решение.Хотя это очень медленно.

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)));
3 голосов
/ 26 августа 2010

В этом нет необходимости в рекурсии. Просто запишите символы, которые вы хотите в вашей строке, например:

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)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...