QT 连续生成指定范围内不重复的随机值

本文分享了如何在Qt中使用qsrand()和QTime类生成真正随机数,以及实现连续生成5个不重复随机数的方法。适合初学者了解C++/QT编程中的随机数生成技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在工作中需要使用到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程序员不久,本文若有不足,烦请各路大神不吝指点,如果不理解的地方大家可以私信我,毕竟有很多时间都泡在优快云

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江一_a

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值