当前位置:网站首页>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
边栏推荐
猜你喜欢
随机推荐
Oracle 11g silent install
数组与字符串8-最长回文子串
二分查找2 - x的平方根
域名怎么管理,域名管理注意事项有哪些?
JDBC从手写连接到引用DBCP和C3P0
域名管理常见问题:IP、域名和DNS之间的区别和关系
go test执行多个文件夹下相同目录的用例
Command errored out with exit status 1类似问题解决方案
C # program with administrator rights to open by default
ESXI主机给虚拟机添加USB加密狗设备
学习C的第一天,尝试一下写博客
JUC并发编程深入浅出!
游戏3D建模师是吃青春饭的吗?被高薪挖掘的建模人才,靠的是这个
TFS(AzureDevOps)取消离职人员的签出项
【onnx 输入尺寸】修改pytorch生成的onnx模型的输入尺寸
MySql data format is converted to Redis key-value pair format
C#使用Oracle.ManagedDataAccess连接C#数据库
二层交换机,三层交换机,路由器内容总结记录
2021-06-14
IDEA连接mysql又报错!Server returns invalid timezone. Go to ‘Advanced‘ tab and set ‘serverTimezone‘ prope