今天写程序,需要用到随机种子来产生不同的随机数。在Qt中,设置随机种子的方法是void qsrand(uint seed)。它的参数seed是一个无符号32位数,一般都是与调用时间关联起来
在C++环境中,ctime.h头文件提供了time函数,一般要包含该文件:
#include <ctime>
在设置种子的地方调用
qsrand((quint32)time(0));
关于time_t time(0),在网上查到如下信息:
time_t 被定义为长整型,它将返回从1970年1月1日零时零分零秒到现在所经历过的时间,单位为秒。比如输出 cout<<time(0) ,将得到值约为1169174701,约等于37(年)* 365(天)* 24(小时)* 3600(秒)(月和日不计)。
QT生成随机数和C语言差距不大,C语言用s
rand
()和
rand
(),QT是用
Qs
rand
()和q
rand
();
QT生成随机数的格式是:
qs
rand
(QTime(0,0,0).secsTo(QTime::currentTime()));
q
rand
();
这里因为有QTime()所以要加头文件#include,而
qs
rand
和q
rand
这两个函数则在#include 里。
qs
rand
用来设置一个种子,该种子为q
rand
生成随机数的起始值。如果不用
qs
rand
设置种子会导致每次运行程序得到的随机数
在Qt中,生成随机数的函数为 q
rand
()。该函数是标准C++函数
rand
的线程安全版本。不过,如果我们仅仅只是调用该函数来生成随机数,那么每次得到的随机数都将是相同的,这是因为Qt生成的随机数严格来说是一个“伪随机”,它的产生是根据随机数种子计算得到的。如果种子相同,那么所得到的随机数也是相同的。
因此,为了使我们的随机数看起来更为“随机”一些,我们在每次获取随机数之前都需要初始化一个不...
qs
rand
(QTime(0,0,0).secsTo(QTime::currentTime()));
接着就可以随机了:
q
rand
()理论上返回0 到
RAND
_MAX间的值。
如果要返回0~n间的值,则为:q
rand
()%n;
如果要返回a~b间的值,则为:a + q
rand
() % (b - a)
这里介绍2...
1.生成随机数 生成随机数主要用到了函数
qs
rand
和q
rand
,这两个函数在#include <QtGlobal>中,
qs
rand
用来设置一个种子,该种子为q
rand
生成随机数的起始值。比如说
qs
rand
(10),设置10为种子,那么q
rand
生成的随机数就在[10,32767]之间。而如果在q
rand
()前没有调用过
qs
rand
(),那么q
rand
()就会自动调用
qs
...
1、问题背景
在最新版本中,有一些函数或者方法已经更改,所以在老版本可以运行的程序代码,在新版本中可能就会产生问题。最近在测试QT中customplot实时绘制曲线功能时,需要使用随机数字,在网站上找了一段代码,测试后出现以下问题:
系统:windows10 X86
QT版本:6.1.2
包含头文件QtGlobal <<之前的版本q
rand
(),
qs
rand
()的头文件>>
重启QT,删除构造文件重新构造
创建新项目,单独测试这两个函数
3、出现问题原因
QT生成随机数和C语言差距不大,C语言用s
rand
()和
rand
(),QT是用
Qs
rand
()和q
rand
(); 生成随机数主要用到了函数
qs
rand
和q
rand
,这两个函数在#include 中,
qs
rand
用来设置一个种子,该种子为q
rand
生成随机数的起始值。比如说
qs
rand
(10),设置10为种子,那么q
rand
生成的随机数就在[10,32767]之间。而如果在q
rand
()前没有调用过
qs
rand
(),那么q
rand
()就会自动调用
qs
rand
(1),即系统默认将1作为随机数的起始值
我们经常会碰到诸如产生随机数的问题,以往使用的习惯的s
rand
,
qs
rand
等函数已经在Qt5的最后末代版本Qt5.15中被弃用了,到了Qt6就更加不会再使用它了,取而代之的是Q
Rand
omGenerator类。
函数:
qs
rand
()、q
rand
()
在使用q
rand
()函数产生随机数之前,一般要使用
qs
rand
()函数为其设置初值,如果不设置初值,那么每次运行程序,q
rand
()都会产生相同的一组随机数
//产生随机数种子(指从零点整到当前时间所经过的秒数)
qs
rand
(QTime(0,0,0).secsTo(QTime::currentTime()));
//得到随机数
int
rand
=...
在前一篇中我们介绍了键盘和鼠标事件,其实还有一个非常常用的事件,就是定时器事件,如果要对程序实现时间上的控制,那么就要使用到定时器。而随机数也是很常用的一个功能,在我们要想产生一个随机的结果时就要使用到随机数。这一篇我们就来简单介绍一下定时器和随机数。环境是:Windows 7 + Qt 4.8.1 +Qt Creator 2.4.1一、定时器Qt中有两种方法来使用定时器,一种是定时器事件,另一种是使用信号和槽。一般使用了多个定时器时最好使用定时器事件来处理。1.新建Qt Gui应用,项目名称为,基类选择,
1.timer.start(1000) 记得加时间
2.Lcdnum->display(num) 让lcd显示时间
3.ui->lael->setScaledContends(true) 内容自动缩放
4.This->showFullScreen() 满屏
5.产生一个随机数
Qs
rand
(QTime(0,0,0).secsTo(QTime::currentTime()));
Q
rand
()%100;//0-99的随机数
6.自己绑定可控性强一些
7.用指针形式new一个就新一个,而
1.<QtGlobal> 头文件
<QtGlobal> 头文件包含了 Qt 类库的一些全局定义,包括基本数据类型、函数和宏。一般的 Qt 类的头文件都会包含该文件,所以不用显式包含这个头文件也可以使用其中的定义。
(1) Qt 中的数据类型定义
Qt 数据类型
qint8
signed char
qint16
signed short
qint32
参考网址:
https://www.it610.com/article/5005396.htm
https://www.cnblogs.com/bingcaihuang/archive/2011/02/11/1951401.html
生成随机数主要用到两个函数
qs
rand
和q
rand
。
(1)
qs
rand
():设置一个种子;
(2)q
rand
():以该种子为起始值生成随机数。
比如说
qs
rand
(10),设置10为种子,那么q
rand
生成的随机数就在[10,32767]之间。使用相同的种子生成的随机数一样。
qs
rand
(QTime(0,0,0).secsTo(QTime::currentTime()));
接着就可以随机了:
q
rand
()理论上返回0 到
RAND
_MAX间的值。
如果要返回0~n间的值,则
time= QTime::currentTime();
qs
rand
(time.msec()+time.second()*1000);
int high = 0xd7 - 0xc1;//16-55区汉字