生成随机QString每次都会产生相同的结果

Generate random QString yields same result every time

本文关键字:结果 随机 QString      更新时间:2023-10-16

我正在做一个QT项目,用户输入他们的全名,程序根据他们名字中的字母生成一个随机的5个字符的密码。不幸的是,我在运行时遇到了一个问题,但每次重新运行程序时都会产生相同的结果。所以它显然不是很随机。即使在退出QT Creator并再次打开它并使用相同的用户输入运行程序后,它也会产生相同的结果。

我还需要生成没有空格的密码。

这是我的代码:

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

任何解决方案都将不胜感激。

您需要为qrand提供一个合适的种子(通常在程序启动时)。尝试:

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

你没有问这个问题,但你是否检查fullName的长度不是零(因为程序会试图除以零)?或者它不是只由空格组成的(因为它会永远循环)?两者的一个简单解决方案是修剪fullName并检查其长度是否严格大于零。