Я пытаюсь написать рекурсивную программу генерации паролей в java, но вместо того, чтобы возвращать один случайно сгенерированный пароль, консоль выплевывает каждую комбинацию паролей и просто продолжает идти.Рекурсивный генератор случайных паролей
* Кроме того, у меня должна быть хотя бы одна заглавная буква в пароле, поэтому я произвольно генерирую одно или ноль.
Вопрос: Как я могу сделать этот рекурсивный метод только распечатать ОДИН случайный сгенерированный пароль randomSize
длина? Как я могу сделать верхний регистр символа в зависимости от того, является ли randomCapital
равным 1?
КОД:
public class PasswordGenerator{
public static void main(String[] args) {
Random rand = new Random();
int randomSize = rand.nextInt((13) + 8);
generatePassword("", 0, randomSize);
}
public static char[]chars = {'a','b','c','d','e','f','g','h','i','j','k','l','m',
'n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5',
'6','7','8','9','!','@','$','%','^','&'};
public static void generatePassword(String password, int position, int size)
{
Random rand = new Random();
int randomCapital = rand.nextInt(1);
if(position < size && randomCapital == 0)
{
for(char ch: chars)
{
generatePassword(password + ch, position + 1, size);
}
if(position < size && randomCapital == 1)
{
for(char ch: chars)
{
//how can I make this char capital if randomCapital is 1?
generatePassword(password + ch, position + 1, size);
}
}
}
else
System.out.println(password);
}
}
[ 'rand.nextInt (1)'] (http://docs.oracle.com/javase/7/docs/api/java/util/Random.html#nextInt%28int%29) возвращает '0' со 100% -ной вероятностью, потому что он« возвращает псевдослучайное равномерно распределенное значение int между 0 (включительно) и указанным значением (исключительным) ». –
@MickMnemonic, ооооооооооооо. Я всегда это испортил. Как насчет вывода моего кода? Все, что я получаю что-то вроде этого: aaaaaaaaaa9woi aaaaaaaaaa9woj aaaaaaaaaa9wok aaaaaaaaaa9wol aaaaaaaaaa9wom ........ Как я могу сделать это вернуть только один пароль? – Jason
Просто обратите внимание, что 'Random' не является безопасным - используйте этот код только для упражнений. – SilverlightFox