目录
QT生成随机数
Qt生成随机数,不重复的随机数,递增随机数
QT5 定时器的使用
QT生成随机数
https://www.cnblogs.com/xiaolanchong/p/7528187.html
QT生成随机数和C语言差距不大,C语言用srand()和rand(),QT是用Qsrand()和qrand();
QT生成随机数的格式是:
qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
qrand();
这里因为有QTime()所以要加头文件#include<QTime>,而qsrand和qrand这两个函数则在#include <QtGlobal>里。
qsrand用来设置一个种子,该种子为qrand生成随机数的起始值。如果不用qsrand设置种子 会导致每次运行程序 得到的随机数一样。
void get_random_number()
{
qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
int a = qrand()%9; //随机生成0到9的随机数
qDebug()<< a;
}
QT5 定时器的使用
https://blog.csdn.net/iXiaochu/article/details/97154032
Qt产生随机数
1. 概述
随机数就是就随机数种子中取出的数。
种子就是个序号,这个序号交给一个数列管理器,通过这个序号,你从管理器中取出一个数列,这个数列就是你通过那个序号得到的随机数。
但这个随技术并不真正随机。因为它是通过某个算法的得到。也就是说你给数列管理器同一个序号将得到同样一个“随机”数列。也就是说种子和随机数列是一一对应的。
{An}=f(x), x 就是种子,F()是算法,{An}是数列,这个数列看上去是随机的,这是因为An的通项很复杂。
例如:从1、2、3、4、5、6、7、8、9、0这十个数中随机取出一个数,取出的数是6的话,那么6就叫随机数。十个数字就叫随机数种子。如果是从1到50之间取数字,取出的数字叫随机数,这1到50那50个数字就叫随机数种子。
————————————————
版权声明:本文为CSDN博主「十年编程老舅」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_73443478/article/details/128836507
Qt 随机数生成: QRandomGenerator
Qt 随机数生成
Qt 5.10 后,使用 QRandomGenerator 生成随机数。
这里只介绍一个函数QRandomGenerator::bouonder(),如下图所示:
注意,bounded()函数中返回的数不包括参数中的上限值。
Qt生成随机数,不重复的随机数,递增随机数
其实,所谓的随机数只是一种绝对理想状态下的随机数,计算机生成的随机数即是随机的又是有规律的:
比如:
srand(1);
for(int i = 0; i < 10; ++i)
{
int nRandNum = rand % 10;
cout << nRandNum ;
}
这个生成的随机数是 [0,10)之间的一个数,每次输出都是一样的序列,那么如何让每次输出的序列不一样呢?
利用系统时间,代码如下:
int nSeed= QDateTime::currentDateTime().time().second();
srand(nSeed);
for(int i =0; i < 10; ++i)
{
int nRandNum = (rand()%10)+80;
cout << nRandNum ;
}
秒是实时生成的,所以nSeed也会变,这就使每次输出的序列不一样。
生成随机数
在Qt中,生成随机数主要用到了函数qsrand和qrand,这两个函数在#include 中,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 nNum=qrand()%10;
qDebug() << nNum;
}
}
注意代码中使用的种子,这里没有用固定值来作为种子,是希望函数在每次调用(间隔大于1秒)时生成的随机数不一样。
生成不重复的随机数
重复与否需要自己做判断。
void generateUniqueRandomNumber()
{
int i,j;
QList<int> listNums;
qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
for(i = 0; i < 10; i++)
{
listNums.append(qrand()%10);
bool bFlag = true;
while(bFlag)
{
for(j = 0; j < i; j++)
{
if(listNums[i] == listNums[j])
{
break;
}
}
if(j < i)
{
listNums[i]= rand()%10;
}
if(j == i)
{
bFlag = !bFlag;
}
}
}
for(i = 0; i < listNums.count(); i++)
{
qDebug() << listNums[i];
}
}
生成递增的随机数
在随机数生成后进行排序,Qt提供了一个非常好用的排序函数qSort,详细的用法可参考Qt帮助。
void generateAscendRandomNumber()
{
int i;
QList<int> listNums;
qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
for(i=0;i<10;i++)
{
listNums.append(qrand()%10);
}
qSort(listNums.begin(), listNums.end());
for(i = 0; i < 10; i++)
{
qDebug() << listNums[i];
}
}
输出结果如下所示,可以看出qSort默认递增排序,即使数列中包含相同的数。
0 1 1 3 4 4 6 7 7 9
————————————————
版权声明:本文为CSDN博主「MrHHHHHH」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/MrHHHHHH/article/details/128040023
Qt产生指定范围内随机数(随机字符串)
1.目的
在编写QT项目时,产生随机数和随机字符串是十分常见的需求,使用qrand函数就能够实现,但是如果不使用种子的话,产生的随机数并不是真正的随机数,而是固定的数字。通常情况下,我们会使用当前时间作为随机数的种子,以产生真正意义上的随机数
2.生成指定范围随机数
Qt产生随机数代码如下:
int getRandom(int min,int max)
{
qsrand(QTime(0, 0, 0).secsTo(QTime::currentTime()));
int num = qrand()%(max-min);
qDebug()<<num+min;
}
3.生成不重复的随机数组(这个例子优点 bug)
将产生的随机数存放到数组中,在每次产生新的随机数的同时,在随机数列表中检查是否包含该数
如果包含则重新生成,直到生成新的随机数为止。
int getRandom(int min,int max)
{
QList<int> list;
int i,j;
bool res = true;
qsrand(QTime(0, 0, 0).secsTo(QTime::currentTime()));
for (int i=0; i<10; i++) {
int num = qrand()%(max-min)+min;
list.append(num);
while(res)
{
for(j=0;j<i;j++)
{
if(list[i]==list[j])
break;
}
if(j<i)
{
list[i] = qrand()%(max-min)+min;
}
if(j==i)
res=!res;
}
}
}
4.产生随机字符串
产生随机字符串代码如下:
QString getRandomString(int length)
{
qsrand(QDateTime::currentMSecsSinceEpoch());
const char ch[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
int size = sizeof(ch);
char* str = new char[length + 1];
int num = 0;
for (int i = 0; i < length; ++i)
{
num = rand() % (size - 1);
str[i] = ch[num];
}
QString res(str);
return res;
}
————————————————
版权声明:本文为CSDN博主「欧特克_Glodon」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_37251750/article/details/125426707
Qt生成随机数的方法
https://blog.csdn.net/caoshangpa/article/details/51036267
1.生成随机数
生成随机数主要用到了函数qsrand和qrand,这两个函数在#include <QtGlobal>中,qsrand用来设置一个种子,该种子为qrand生成随机数的起始值。比如说qsrand(10),设置10为种子,那么qrand生成的随机数就在[10,32767]之间。而如果在qrand()前没有调用过qsrand(),那么qrand()就会自动调用qsrand(1),即系统默认将1作为随机数的起始值。使用相同的种子生成的随机数一样。
注意代码中使用的种子,这里没有用固定值来作为种子,是希望函数在每次调用(间隔大于1秒)时生成的随机数不一样。
2. 生成不重复的随机数
3.生成递增的随机数
就是在随机数生成后进行排序,Qt提供了一个非常好用的排序函数qSort,详细的用法可参考Qt帮助
————————————————
版权声明:本文为CSDN博主「草上爬」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/caoshangpa/article/details/51036267
qt产生一个范围内的随机数
使用函数 qrand()
例如:产生100~200以内的随机数
则可以理解为产生0~100以内的随机数再加上100,即0~100+100
代码:
//例1:产生100~200以内
int num=qrand()%100+100;
//例2:产生23~88以内(为什么是23到88,我也是随机说的一个范围)
int num=qrand()%(88-23)+23;
————————————————
版权声明:本文为CSDN博主「sxczzZ」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
1362

被折叠的 条评论
为什么被折叠?



