当前位置:网站首页>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
边栏推荐
猜你喜欢
随机推荐
3. What is the difference between final, finally, and finalize?
NIO知识汇总 收藏这一篇就够了!!!
TFS(Azure DevOps)禁止多人同时签出
【入职第一篇知识总结- Prometheus】
restful 常用状态码
次世代建模到底需要哪些美术基础
Eight, the difference between the interface of the abstract class
xshell报错-要继续使用此程序,您必须应用最新的更新或使用新版本
Redis的应用详解
php 数组元素移动
大学毕业后,零基础想转行成为一名3D建模师,现在该做什么?
ue4学习日记2(项目迁移,画刷,附材质)
使用Powershell批量导入Task
计算机网络高频面试考点
2021-06-20
Use of Alibaba Cloud SMS Service (create, test notes)
JumpServer如何传输文件以及复制剪切板
contos install php-ffmpeg and tp5.1 using plugin
Prometheus监控容器、pod、邮件告警
【3D建模制作技巧分享】ZBrush快捷键如何设置