C++编程中,如何生成一个非零正值且范围在0到10之间的随机double值?有现成函数可以调用?
时间: 2024-03-05 09:50:02 浏览: 21
可以使用 C++ 标准库中的 `<random>` 头文件来生成随机数。这个头文件提供了许多不同的随机数生成器和分布函数,可以方便地生成各种类型的随机数。以下是生成一个非零正值且范围在0到10之间的随机double值的示例代码:
```c++
#include <iostream>
#include <random>
int main()
{
std::random_device rd; // 用于生成随机数种子
std::mt19937 gen(rd()); // 梅森旋转算法作为随机数生成器
std::uniform_real_distribution<double> dist(0.0001, 10.0); // 生成0.0001到10之间的均匀分布随机数
double rand_num;
do {
rand_num = dist(gen); // 生成随机数
} while (rand_num == 0.0); // 如果生成的随机数为0,则重新生成
std::cout << "随机数:" << rand_num << std::endl;
return 0;
}
```
在上面的代码中,首先使用 `std::random_device` 来生成随机数种子,然后使用梅森旋转算法作为随机数生成器 `std::mt19937`。创建一个 `std::uniform_real_distribution<double>` 对象,用于生成0.0001到10之间的均匀分布随机数。最后使用 `dist(gen)` 来生成随机数,如果生成的随机数为0,则重新生成,直到生成非零正值且范围在0到10之间的随机double值。