生成随机QString每次都会产生相同的结果
Generate random QString yields same result every time
我正在做一个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并检查其长度是否严格大于零。
相关文章:
- C++剪贴板队列粘贴随机结果?
- 为什么我在这个模板上有随机结果?
- 我在运行函数 GetVolumeInformation() 时得到非常随机的结果
- 如果我在每个平台上使用相同的种子,随机结果会相同吗?
- 尝试以随机字符(长读取)打印字符串返回结果
- C 编程:在循环时运行 2 并从 loop1 获取数据的随机结果
- 随机洗牌似乎会产生相同的结果,但仅在前两个实例中产生相同的结果.我如何避免这种情况
- 我如何在 c++ 中执行随机结果,如下所示的代码
- C++时间()给我的结果几乎是随机的
- 生成随机骰子并测量结果的频率
- 生成随机QString每次都会产生相同的结果
- 简单的代码,看似随机的结果——这是由于过时的引用造成的吗
- C++随机字符串返回意外结果
- 为什么起始值会影响种子随机的结果
- 如何使用 std::mt19937 避免相同的随机结果
- 当我编译和运行C++时,随机生成器给出了相同的结果
- 使用pthread时的随机结果
- 如何创建一个不会重复结果的随机事件
- 为什么rand()/double(rand_MAX)的第一个结果不是随机的
- 了解boost::随机统计测试的结果