QRandomGenerator::global()->bounded(1, 6)什么意思
时间: 2024-02-23 08:56:13 浏览: 28
这是 Qt 框架中的一个随机数生成函数,它的作用是生成一个介于 1 和 6 之间的随机整数。其中,QRandomGenerator::global() 是获取一个全局的随机数生成器实例,而 bounded() 则是该实例的一个方法,用于生成指定范围内的随机数。在本例中,范围是 [1, 6],即包含 1 和 6 两个数。因此,这行代码的作用是生成一个 1 到 6 之间的随机整数。
相关问题
void MainWindow::onTimer() { // 更新数据 for (int i = 0; i < 10000000; i++) { mYDataTol[i] = QRandomGenerator::global()->bounded(1.00); } // 绘制图形 //ui->plot->graph(0)->setData(QVector<double>::fromStdVector(std::vector<double>mYDataTol)); ui->plot->graph(0)->setData(QVector<double>::fromStdVector(std::vector<double>(mYDataTol.begin(), mYDataTol.end())),true); ui->plot->replot(); }报错G:\QTproject\TestTo10million\TestTo10million\qcustomplot.h:5544: candidate function not viable: no known conversion from 'bool' to 'const QVector<double>' for 2nd argument
这个报错信息提示 `setData()` 函数的第二个参数需要传递的是 `QVector<double>` 类型的数据,而你传递了一个 `bool` 类型的数据,导致类型不匹配。
解决方法是将第二个参数改为 `false` 或者省略第二个参数。`false` 表示不更新曲线,而 `true` 表示更新曲线。如果你只是想更新数据,而不需要更新曲线,那么可以将第二个参数设置为 `false`,如下所示:
```
ui->plot->graph(0)->setData(QVector<double>::fromStdVector(std::vector<double>(mYDataTol.begin(), mYDataTol.end())), false);
```
如果你需要更新曲线,请将第二个参数设置为 `true` 或者省略第二个参数,如下所示:
```
ui->plot->graph(0)->setData(QVector<double>::fromStdVector(std::vector<double>(mYDataTol.begin(), mYDataTol.end())));
```
这样就可以解决这个报错了。
把( qrand() % (GAME_HEIGHT-100 - 180 + 1) ) + 160改写成QRandomGenerator::global()->generate()类型
好的,可以这样改写:
```
QRandomGenerator generator;
int y = generator.bounded(160, GAME_HEIGHT-100);
```
`QRandomGenerator` 是 Qt 提供的随机数生成器类,`bounded` 方法可以生成指定范围内的随机数。这里将原来的 `( qrand() % (GAME_HEIGHT-100 - 180 + 1) ) + 160` 改写成了 `generator.bounded(160, GAME_HEIGHT-100)`,生成的随机数范围是 [160, GAME_HEIGHT-100]。