生成随机数:
/*通过QDateTime::currentMSecsSinceEpoch()函数获取当前的毫秒级时间戳,
* 并将其作为种子值用于创建两个QRandomGenerator对象。*/
QRandomGenerator *p1=new QRandomGenerator(QDateTime::currentMSecsSinceEpoch());
QRandomGenerator *p2=new QRandomGenerator(QDateTime::currentMSecsSinceEpoch());
for (int i = 0; i < 5; ++i) {
/*%u是格式化字符串,用于表示一个无符号整数。
generate()函数是QRandomGenerator类的成员函数,用于生成下一个随机数。*/
qDebug("R1=%u,R2=%u",p1->generate(),p2->generate());
}
QRandomGenerator::securelySeeded()
是一个静态成员函数,用于创建一个已经安全种子化的QRandomGenerator对象。
在Qt中,安全种子化是指使用安全的随机源来初始化随机数生成器,以提高随机数生成的安全性和质量。securelySeeded()
函数内部使用了强加密的随机源来生成种子值,从而创建一个安全种子化的QRandomGenerator对象。
使用securelySeeded()
函数创建的QRandomGenerator对象可以用于生成高质量的随机数序列,适用于需要较高安全性和加密性的应用场景,如密码学、安全通信等。
/*QRandomGenerator::securelySeeded()是一个静态成员函数,
* 用于创建一个已经安全种子化的QRandomGenerator对象。*/
QRandomGenerator p=QRandomGenerator::securelySeeded();
qDebug("R=%u",p.generate());
使用了Qt的QRandomGenerator类的静态成员函数system()
和global()
来创建两个QRandomGenerator对象的指针。
1、QRandomGenerator::system()
是一个静态成员函数,返回一个指向系统级随机数生成器的QRandomGenerator对象的指针。系统级随机数生成器使用操作系统提供的随机源进行种子初始化,以生成随机数。它通常提供了更高的随机性和安全性。
2、QRandomGenerator::global()
是另一个静态成员函数,返回一个指向全局随机数生成器的QRandomGenerator对象的指针。全局随机数生成器使用一个全局的种子值进行初始化,可以在应用程序的不同部分共享和使用相同的随机数序列。
QRandomGenerator *p1=QRandomGenerator::system();
qDebug("R=%u",p1->generate());
QRandomGenerator *p2=QRandomGenerator::global();
qDebug("R=%u",p2->generate());
下面程序中的rand()==rand.generate()
QRandomGenerator rand(QDateTime::currentMSecsSinceEpoch());
for (int i = 0; i < 5; ++i) {
qDebug("R=%u",rand());
}
使用了Qt的QRandomGenerator类和QList容器来生成一组随机数。首先,创建了一个QList<quint32>类型的对象list,表示一个包含32位无符号整数的列表。然后,使用list.resize(10)
将列表的大小调整为10,以便可以容纳10个随机数。接下来,通过调用QRandomGenerator::global()->fillRange(list.data(), list.size())
,使用全局随机数生成器填充list中的元素。
QList<quint32> list;
list.resize(10);
QRandomGenerator::global()->fillRange(list.data(),list.size());
生成指定范围的随机数
//生成[0,10)的随机数
int a=QRandomGenerator::global()->bounded(10);
qDebug("R=%u",a);
//生成[10,20)的随机数
int b=QRandomGenerator::global()->bounded(10,20);
qDebug("R=%u",b);