📅  最后修改于: 2023-12-03 14:40:14.993000             🧑  作者: Mango
在 C++ 中,我们可以使用标准库中的随机数生成器来生成范围内的随机数。以下是一些常见的方法和技巧。
首先,我们需要包含 <random>
头文件来使用随机数生成器。C++ 中的随机数生成器主要有两种类型:伪随机数生成器(pseudo-random number generator)和真随机数生成器(true random number generator),我们通常使用伪随机数生成器。
我们可以使用 <random>
头文件中的 std::uniform_int_distribution
类来生成一个指定范围内的随机整数。以下是一个示例:
#include <random>
int getRandomNumber(int min, int max) {
std::random_device rd; // 随机设备,用于生成种子
std::mt19937 gen(rd()); // 以随机设备生成的种子初始化随机数生成器
std::uniform_int_distribution<> dis(min, max); // 指定范围内的均匀分布
return dis(gen);
}
int main() {
int randomNum = getRandomNumber(1, 10);
// 在 1 到 10 之间生成一个随机整数
return 0;
}
在上面的示例中,我们使用 std::random_device
生成一个随机设备,用于生成种子。然后,我们使用 std::mt19937
类以随机设备生成的种子来初始化一个伪随机数生成器。最后,我们使用 std::uniform_int_distribution
类来指定生成的整数范围。
要生成范围内的随机浮点数,我们可以使用 std::uniform_real_distribution
类。以下是一个示例:
#include <random>
double getRandomNumber(double min, double max) {
std::random_device rd; // 随机设备,用于生成种子
std::mt19937 gen(rd()); // 以随机设备生成的种子初始化随机数生成器
std::uniform_real_distribution<> dis(min, max); // 指定范围内的均匀分布
return dis(gen);
}
int main() {
double randomNum = getRandomNumber(0.0, 1.0);
// 在 0.0 到 1.0 之间生成一个随机浮点数
return 0;
}
在上面的示例中,我们使用 std::uniform_real_distribution
类来指定生成的浮点数范围。
在上面的示例中,我们使用 std::random_device
来生成随机设备,并以其生成的随机种子来初始化随机数生成器。这个种子通常是不可见的。如果我们需要指定一个可见的种子,比如固定的种子用于调试或重现,我们可以使用 std::mt19937
的 seed
方法来设置种子。以下是一个示例:
#include <random>
int getRandomNumber(int min, int max, unsigned seed) {
std::mt19937 gen(seed); // 使用指定种子初始化随机数生成器
std::uniform_int_distribution<> dis(min, max); // 指定范围内的均匀分布
return dis(gen);
}
int main() {
int randomNum = getRandomNumber(1, 10, 42);
// 使用种子 42,在 1 到 10 之间生成一个随机整数
return 0;
}
在上面的示例中,我们使用 std::mt19937
的 seed
方法来设置种子为 42。
这些方法可以帮助我们在 C++ 中快速生成指定范围内的随机数。请记住,在使用随机数时,为了能够得到不同的随机序列,我们应该确保种子在每次程序运行时都是不同的。
希望这篇介绍能帮助你在 C++ 中生成范围内的随机数。返回的代码片段已经按照 Markdown 格式标明。