添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

今天写程序,需要用到随机种子来产生不同的随机数。在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 &lt;QtGlobal&gt;中, 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区汉字