c++中如何用Random函数求整数p到r的随机数
时间: 2024-09-23 19:09:04 浏览: 36
在 C++ 中,如果你想要生成介于整数 p 到 r 之间的随机整数,你可以使用 `<cstdlib>` 库里的 `rand()` 函数配合 `%` 运算符,但这种方法并不推荐使用标准库中的 `rand()` 因其质量不高。这里是一个简单的示例,不过效率和随机性都不如 `<random>` 模块提供的方法。
```cpp
#include <cstdlib>
#include <ctime>
int getRandomInt(int p, int r) {
// 设置随机数种子(通常用当前时间)
std::srand(std::time(0));
// 使用 rand() 函数并加上 p,再对 r-p+1 取模,得到 [p, r] 区间内的随机整数
return (std::rand() % (r - p + 1)) + p;
}
int main() {
int low = 10;
int high = 50;
int random_num = getRandomInt(low, high);
std::cout << "Random integer between " << low << " and " << high << " is: " << random_num << std::endl;
return 0;
}
```
然而,为了保证随机性和性能,建议还是使用 `<random>` 模块的例子,如下所示:
```cpp
#include <random>
int getRandomIntInRange(int min, int max) {
static std::mt19937 gen(std::random_device{}()); // 高质量的随机数生成器
std::uniform_int_distribution<> dis(min, max); // 定义范围
return dis(gen);
}
int main() {
int low = 10;
int high = 50;
int random_num = getRandomIntInRange(low, high);
std::cout << "Random integer between " << low << " and " << high << " is: " << random_num << std::endl;
return 0;
}
```
阅读全文