本文主要介绍了Qt生成随机数,生成随机数主要用到了函数qsrand和qrand,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
1.生成随机数
生成随机数主要用到了函数qsrand和qrand,这两个函数在#include <QtGlobal>中,qsrand用来设置一个种子,该种子为qrand生成随机数的起始值。比如说qsrand(10),设置10为种子,那么qrand生成的随机数就在[10,32767]之间。而如果在qrand()前没有调用过qsrand(),那么qrand()就会自动调用qsrand(1),即系统默认将1作为随机数的起始值。使用相同的种子生成的随机数一样。
下列代码生成了[0,9]之间的10个随机数。
void generateRandomNumber()
{
qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
for(int i=0; i<10; i++)
{
int test =qrand()%10;
qDebug()<<test;
}
}
注意代码中使用的种子,这里没有用固定值来作为种子,是希望函数在每次调用(间隔大于1秒)时生成的随机数不一样。
2.生成不重复的随机数
这个没有特别好的方法,需要自己手动计算,代码如下。
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];
}
}
3.生成递增的随机数
就是在随机数生成后进行排序,Qt提供了一个非常好用的排序函数qSort,详细的用法可参考Qt帮助。
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];
}
}
输出结果如下所示,可以看出qSort默认递增排序,即使数列中包含相同的数。
到此这篇关于Qt生成随机数的方法的文章就介绍到这了,更多相关Qt 随机数内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
本文标题为:Qt生成随机数的方法
基础教程推荐
- 一文带你了解C++中的字符替换方法 2023-07-20
- C语言 structural body结构体详解用法 2022-12-06
- C++中的atoi 函数简介 2023-01-05
- C++使用easyX库实现三星环绕效果流程详解 2023-06-26
- C/C++编程中const的使用详解 2023-03-26
- 如何C++使用模板特化功能 2023-03-05
- C利用语言实现数据结构之队列 2022-11-22
- C语言基础全局变量与局部变量教程详解 2022-12-31
- C++详细实现完整图书管理功能 2023-04-04
- 详解c# Emit技术 2023-03-25