то есть я указал количество символов в строке 4 и тип allowedChars = "abcdefghijkmnopqrstuvwxyz"; программа сгенерировала максимально возможные комбинации без повторений и вышла из цикла.
этих комбинаций, кстати, 390 625 штук.
Math.Pow(alphabetLength, passwordLength)
Если вам нужно сгенерировать, условно, 100 уникальных 10 символьных паролей, то вот наивный код:
private static HashSet<string> GenerateSomeRandomPasswords(int passwordCount, int passwordLength, int type)
{
HashSet<string> passwords = new HashSet<string>();
int addedPasswordCount = 0;
while (addedPasswordCount<passwordCount)
{
string freshPassword = GenerateRandomPassword(passwordLength, type);
if (passwords.Contains(freshPassword)==false)
{
passwords.Add(freshPassword);
addedPasswordCount++;
}
}
return passwords;
}
( проверка того, чтобы passwordCount не превышал разумные пределы — за вами )
Если вам, вдруг, нужно сгенерировать больше половины всех возможных паролей, или вообще весь набор, задача решается принципиально иначе. Напишите камент, если вы об этом.