QRandomGenerator类

本文介绍了在Qt中使用QRandomGenerator类生成随机数的方法,包括使用系统级和全局随机数生成器,安全种子化,以及如何生成指定范围的随机数。同时展示了如何结合QList容器来管理随机数生成过程。
摘要由CSDN通过智能技术生成

生成随机数:

/*通过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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值