一、qrandomgenerator头文件
QRandomGenerator是Qt中用于生成随机数的类。这个类定义在QRandomGenerator头文件中。一般情况下,在需要使用随机数的场景下,要包含此头文件。
#include <QRandomGenerator>
二、qrandomgenerator找不到,qrandomgenerator未定义,qrandomgenerator没有文件
如果编译时遇到上述错误,可能是因为没有在.pro文件中加入对应的QT模块。
QT += core
三、qrandomgenerator 未定义基类
一般情况下,我们使用QRandomGenerator类,不需要显式地继承它。如果是继承QRandomGenerator类,编译时可能会遭遇未定义基类错误。正确的方法应该是使用QRandomGenerator类的实例,而不是继承它。
四、qrandomgenerator生成随机数
QRandomGenerator提供了不同类型和范围的随机数生成方法。
// 返回一个无符号短整型的随机数 quint16 randomShort(); // 返回一个无符号整型的随机数 quint32 random(); // 返回一个无符号长整型的随机数 quint64 random64(); // 返回一个[0, 1]之间的浮点型的随机数 float generate(); double generate (); // 返回一个在[min, max]之间的随机数,包括min和max int bounded(int min, int max); unsigned int bounded(unsigned int min, unsigned int max); qint64 bounded(qint64 min, qint64 max); quint64 bounded(quint64 min, quint64 max);
五、qrandomgenerator 5.12.3
在Qt 5.12.3版本中,QRandomGenerator被增强了。现在,您可以使用跨平台API函数SecRandomCopyBytes(苹果)或CryptGenRandom(Windows)来获取更高质量的生成的随机数字。为此,QRandomGenerator新增了构造函数,如下所示:
// 生成更安全的随机数 QRandomGenerator(QRandomGenerator::SecurelySeeded) // 指定种子的随机数 QRandomGenerator(quint32 seed)
六、代码示例
// 生成一个10~100之间的随机数 qint32 number = QRandomGenerator::global()->bounded(10, 100); // 生成一个指定长度的随机字符串 QString randomString(int length) { static const QString chars(QStringLiteral("abcdefghijklmnopqrstuvwxyz" "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "0123456789")); static QRandomGenerator generator(static_cast<quint32>(QTime(0, 0, 0).secsTo(QTime::currentTime()))); QString result; result.reserve(length); while (length--) { result.append(chars.at(generator.bounded(chars.length()))); } return result; }
七、总结
本文对QRandomGenerator进行了详细的阐述。我们可以看到,QRandomGenerator提供了多种类型和范围的随机数生成方法,并在Qt 5.12.3版本中进一步增强,能够生成更高质量的随机数。