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();
相关推荐
PingdiGuo_guo38 分钟前
C++指针(三)
开发语言·c++
蟹至之3 小时前
【Java】异常的初步认识
java·开发语言·类和对象·异常
佩奇的技术笔记4 小时前
Python入门手册:Python基础语法
开发语言·python
学习使我变快乐4 小时前
C++:STL
开发语言·c++
PingdiGuo_guo5 小时前
C++指针(二)
开发语言·c++
Magnetic_h5 小时前
【iOS】类结构分析
开发语言·笔记·学习·ios·objective-c
向哆哆5 小时前
Java 依赖管理工具:使用 Sonatype Nexus 管理项目依赖
java·开发语言
jay神6 小时前
基于Python+YOLO模型的手势识别系统
开发语言·python·深度学习·yolo·手势识别系统
陈天伟教授6 小时前
Web前端开发 - 制作简单的焦点图效果
java·开发语言·前端·前端开发·visual studio
不吃肘击6 小时前
MyBatisPlus使用教程
java·开发语言