Qt之随机数

介绍使用qsrand和qrand生成随机数。

生成随机数

生成随机数主要用到了函数qsrand和qrand,qsrand用来设置种子点,该种子为qrand生成随机数的起始值。如果不调用qsrand,那么qrand()就会自动调用qsrand(1),即系统默认将1作为随机数的起始值。使用相同的种子生成的随机数一样。

下列代码生成了0,99之间的随机数:

复制代码
 qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
 int test =qrand()%100;

生成不重复的随机数

代码如下:

复制代码
void generateUniqueRandomNumber()
{
    int i,j;
    QList<int> numbersList;
    qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
    for(i=0;i<10;i++)
    {
        numbersList.append(qrand()%10);
        bool flag=true;
        while(flag)
        {
            for(j=0;j<i;j++)
            {
                if(numbersList[i]==numbersList[j])
                {
                    break;
                }
            }
            if(j<i)
            {
                numbersList[i]=rand()%10;
            }
            if(j==i)
            {
                flag=!flag;
            }
        }
    }
    for(i=0;i<10;i++)
    {
        qDebug()<<numbersList[i];
    }
}

生成递增的随机数

随机数生成后进行排序,使用排序函数qSort。

复制代码
void generateAscendRandomNumber()
{
    int i;
    QList<int> numbersList;
    qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
    for(i=0;i<10;i++)
    {
        numbersList.append(qrand()%10);
    }
    qSort(numbersList.begin(),numbersList.end());
    for(i=0;i<10;i++)
    {
        qDebug()<<numbersList[i];
    }
}

新版本的QT,qsrand和qrand函数已经丢弃,使用新的类QRandomGenerator。如需要生成正随机数:

复制代码
quint32 value = QRandomGenerator::global()->generate();
相关推荐
君顾17 小时前
上海24小时自助健身房系统开发实战指南:从架构设计到落地部署
java·开发语言·健身房
香菜TTT8 小时前
大模型上下文协议(MCP):AI 应用的“USB-C”接口技术
开发语言·人工智能·经验分享
aramae8 小时前
模拟实现strlen()函数 (C语言)
c语言·开发语言·后端
Quz9 小时前
QML 常见的四种导航布局
qt
jimy19 小时前
readelf 查看“派生类”的vtable符号
开发语言·c++
ctlover10 小时前
排序与查找算法详解
开发语言·python
YYYing.10 小时前
【C++进阶系列 (七)】C++ RTTI 深度剖析:从 typeid 到 dynamic_cast 的底层之旅
开发语言·c++·c/c++·rtti
江湖人称菠萝包10 小时前
【Qt】《Qt 5.9 C++开发指南》笔记-Chapter2-GUI应用程序设计基础
笔记·qt·qt5
nvvas11 小时前
Java 入门(四):数组——数据的集合管理
java·开发语言
重生的黑客11 小时前
Qt 常用控件精讲(1):QWidget 核心属性全解 —— 从 geometry 到 qrc 与 QSS
c++·qt·qwidget·qss·常用控件