1:前言
QT生成随机数和C语言差距不大,C语言用srand()和rand(),QT是用Qsrand()和qrand(); 生成随机数主要用到了函数qsrand和qrand,这两个函数在#include 中,qsrand用来设置一个种子,该种子为qrand生成随机数的起始值。比如说qsrand(10),设置10为种子,那么qrand生成的随机数就在[10,32767]之间。而如果在qrand()前没有调用过qsrand(),那么qrand()就会自动调用qsrand(1),即系统默认将1作为随机数的起始值。使用相同的种子生成的随机数一样。
2:生成随机数
设置种子:
qsrand(QTime(0, 0, 0).secsTo(QTime::currentTime()));
这里没有用固定值来作为种子,是希望函数在每次调用(间隔大于1秒)时生成的随机数不一样
//生成0-10的随机数 并按从小到大排列
1 void get_random_number()
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(int i=0;i<10;i++)
qDebug()<<numbersList[i];
1:前言QT生成随机数和C语言差距不大,C语言用srand()和rand(),QT是用Qsrand()和qrand(); 生成随机数主要用到了函数qsrand和qrand,这两个函数在#include 中,qsrand用来设置一个种子,该种子为qrand生成随机数的起始值。比如说qsrand(10),设置10为种子,那么qrand生成的随机数就在[10,32767]之间。而如果在qrand()前没有调用过qsrand(),那么qrand()就会自动调用qsrand(1),即系统默认将1作为随机数的起始值
Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控件生成并布局Qt动态控
函数:qsrand()、qrand()
在使用qrand()函数产生随机数之前,一般要使用qsrand()函数为其设置初值,如果不设置初值,那么每次运行程序,qrand()都会产生相同的一组随机数
//产生随机数种子(指从零点整到当前时间所经过的秒数)
qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
//得到随机数
intrand=...
Qt中有两种方法来使用定时器,一种是定时器事件,另一种是使用信号和槽。一般使用了多个定时器时最好使用定时器事件来处理。
1.新建Qt Gui应用,项目名称为myTimer,基类选择QWidget,类名为Widget。
2.到widget.h文件中添加函数声明:
protected:
void timerEvent(QTimerEvent *);
然后添加私有变量定义:
int id1, id2, id3;
3.下面到设计模式,向界面上拖入两个标签部件Label。
4.下面进入widget
QT生成随机数和C语言差距不大,C语言用s
rand()和
rand(),
QT是用
Qsrand()和q
rand();
QT生成随机数的格式是:
qsrand(
QTime(0,0,0).secsTo(
QTime::currentTime()));
q
rand();
这里因为有
QTime()所以要加头文件#include,而
qsrand和q
rand这两个函数则在#include 里。
qsrand用来设置一个种子,该种子为q
rand生成随机数的起始值。如果不用
qsrand设置种子会导致每次运行程序得到的随机数
1、问题背景
在最新版本中,有一些函数或者方法已经更改,所以在老版本可以运行的程序代码,在新版本中可能就会产生问题。最近在测试QT中customplot实时绘制曲线功能时,需要使用随机数字,在网站上找了一段代码,测试后出现以下问题:
系统:windows10 X86
QT版本:6.1.2
包含头文件QtGlobal <<之前的版本qrand(), qsrand()的头文件>>
重启QT,删除构造文件重新构造
创建新项目,单独测试这两个函数
3、出现问题原因
使用
qsrande()函数设置初值,如果不设置初值也可以使用,只是每次重新运行程序会产生一组相同的随机数。
调用q
rand()获取随机数。
secsTo()表示两个时间点之间包含的秒数。
获取一个范围内的数值,使这个数与这个整数取余,例如获取0~600直接的数:%600。
qsrand(
QTimer(0,0,0).secsTo(
QTime::currentTime()));
int
rand
我们在用QT编写实现定时器和随机数的产生时,按照手册上的制作,程序可以实现,但这样每次启动程序后,都按同一种顺序产生随机数。为了实现每次启动程序产生不同的初始值。我们可以使用qsrand(time(0));实现设置随机数的初值,而程序每次启动时time(0)返回的值都不同,这样就实现了产生不同初始值的功能。
于是我们将qsrand(time(0));一句加入构造函数里。
#includ
参考网址:
https://www.it610.com/article/5005396.htm
https://www.cnblogs.com/bingcaihuang/archive/2011/02/11/1951401.html
生成随机数主要用到两个函数qsrand和qrand。
(1)qsrand():设置一个种子;
(2)qrand():以该种子为起始值生成随机数。
比如说qsrand(10),设置10为种子,那么qrand生成的随机数就在[10,32767]之间。使用相同的种子生成的随机数一样。