Генерация случайной строки QString каждый раз дает один и тот же результат

Я работаю над проектом QT, где пользователь вводит свое полное имя, а программа генерирует случайный 5-значный пароль на основе букв в их имени. К сожалению, я столкнулся с проблемой, когда она работает, но каждый раз, когда я перезапускаю программу, она дает тот же результат. Так что это явно не очень случайно. Даже после выхода из QT Creator, его повторного открытия и запуска программы с тем же пользовательским вводом она дает те же результаты.

Я также обязан генерировать пароль без пробелов.

Вот мой код:

while(password.length() < 5) {
        int index = qrand() % fullName.length();
        QChar nextChar = fullName.at(index);
        if (!nextChar.isSpace()) {
            password.append(nextChar);
        }
    }

Любое решение будет высоко ценится.

1 ответ

Решение

Вам нужно предоставить qrand подходящее начальное число (обычно при запуске программы). Пытаться:

QTime now= QTime::currentTime() ;
qsrand( now.msec() );

Вы не спрашиваете об этом, но проверяете ли вы, что длина fullName не равна нулю (так как программа будет пытаться делить на ноль)? Или что он состоит не только из пробелов (как это будет цикл навсегда)? Простое решение для обоих - обрезать fullName и проверить, что его длина строго больше нуля.

Другие вопросы по тегам