当前位置:网站首页>QT 连续生成指定范围内不重复的随机值
QT 连续生成指定范围内不重复的随机值
2022-08-03 05:27:00 【Jia_江一】
最近在工作中需要使用到qt生成随机数,然后做个总结,记录一下成长
这里使用 qsrand() 函数就可以实现,但是为了实现真正的随机数,这里还需要用到随机种子,
我们习惯使用当前系统时间作为时间种子。需要用到QTime类,记得添加头文件 #include
生成随机数代码如下:
#include <QTime>
QTime time = QTime::currentTime();
// msec() 当前系统的毫秒值 second()
qsrand(time.msec() *1000 + time.second() * 1000); 秒值
// 生成小数类型的随机数,
double tmpSrandValue = (double)(qrand() %100)/100;
工作上写的Demo需要实现连续生成5个不重复的随机小数,这里我就直接上代码了
// 这里我在类中定义了一个容器
// std::vector<int> m_dVolArray;
m_dVolArray.clear();
// m_maxOutValue m_minOutValue 分别代表范围值的最大值和最小值
double diff = fabs(m_maxOutValue - m_minOutValue); // 求浮点数绝对值
QTime time;
for (int i=0,m=0; m!=5; i++) {
// 一次连续生成5个随机数
Sleep(1); // 睡眠1ms,避免多次生成连续重复数字
time = QTime::currentTime();
qsrand(time.msec()*1000 + time.second() * 1000 *1000);
double dtmp = (float)(qrand() % 100) / 100;
double randoxNumber = m_minOutValue + dtmp * diff;
// 判断生成的随机数 在约定范围内,则追加到容器中
if(m_minOutValue <= randoxNumber && randoxNumber <= m_maxOutValue) {
m_dVolArray.push_back(randoxNumber);
m++;
}
}
以上就到这里了,因为我是刚做c++/QT程序员不久,本文若有不足,烦请各路大神不吝指点,如果不理解的地方大家可以私信我,毕竟有很多时间都泡在CSDN
边栏推荐
猜你喜欢
随机推荐
Servlet详解含实例
How the world's leading medical technology company maximizes design productivity | SOLIDWORKS Product Exploration
ZBrush+Substance制作蜥蜴巫婆医生!
VS Project Configuration Manager
2021-06-15
权限管理 UGO 、 ACL 、特殊权限
C#操作FTP上传文件后检查上传正确性
DNS常见资源记录类型详解
Unity Animation从UAS获取动画资产到编制状态机控制简单的人物动画
SQLMAP介绍及使用
【Personal summary】Key points of MES system development/management
守望先锋英雄角色模型分享,obj文件+材质贴图,3dmax游戏建模
CPU上下文切换详解思维导图
ue4入门学习笔记1(操作界面)
Podman can learn in one piece
VS2022 encapsulates static libraries and calls static libraries under window
Redis哨兵模式+过期策略、淘汰策略、读写策略
3d建模师为什么不建议入行
IDEA连接mysql又报错!Server returns invalid timezone. Go to ‘Advanced‘ tab and set ‘serverTimezone‘ prope
802.1AS 延迟测量理解