Qt生成随机数 qrand 及 QRandomGenerator

本文介绍了Qt中生成随机数的两种方法,包括传统的qsrand和新引入的QRandomGenerator。QRandomGenerator是自Qt5.10起提供的,其bounded方法可以方便地生成指定范围内的随机数,且支持浮点数。

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

最近采用Qt使用随机数,发现了新的使用方法,更简便,现记录如下:

老方法 qsrand

利用qrand和qsrand生成随机数
位于QtGlobal中
例,生成一个0和10之间的随机数

//设置种子,该种子作为qrand生成随机数的起始值,RAND_MAX为32767,即随机数在种子值到32767之间
qsrand(QTime::currentTime().msec()
### 如何在 Qt生成随机数Qt 中,可以通过 `QRandomGenerator` 类或者传统的 `qrand()` 函数来生成随机数。以下是基于现代推荐方法——`QRandomGenerator` 的实现方式。 #### 示例代码:生成 0 到 99 之间的随机数 以下代码展示了如何使用 `QRandomGenerator` 来生成一个范围内的随机整数: ```cpp #include <QRandomGenerator> #include <QDebug> int main() { // 创建安全初始化的随机数生成器实例 QRandomGenerator generator = QRandomGenerator::securelySeeded(); // 生成一个介于 0 和 99 之间的随机数 int randomNumber = generator.bounded(100); // 输出随机数 qDebug() << "Generated Random Number:" << randomNumber; return 0; } ``` 上述代码中,通过调用 `QRandomGenerator::securelySeeded()` 方法创建了一个带有安全种子的随机数生成器对象[^1]。随后利用该对象的成员函数 `.bounded(int upper)` 来获取指定上限范围内(不包括上限值)的一个伪随机整数值[^2]。 #### 关键点说明 - **种子设置**:为了确保每次运行程序时产生的序列不同,通常会采用系统时间或其他不可预测的方式自动播种。这里使用的 `QRandomGenerator::securelySeeded()` 已经内置了高熵种子机制[^3]。 - **边界控制**:`.bounded(upper)` 是一种简单有效的方式来限定所生成随机数的最大可能取值(实际结果小于此参数),无需手动计算余数操作从而避免偏差问题。 #### 替代方案概述 尽管如此,在某些较老版本或特定场景下仍可考虑使用全局静态函数 `qrand()` 配合 `qsrand(unsigned seed)` 进行基本层次上的随机化处理;不过官方文档更倾向于推广前述提到的新式 API 因为其具备更好的性能表现以及跨平台兼容特性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Fu_Lin_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值