📅  最后修改于: 2023-12-03 15:37:18.682000             🧑  作者: Mango
在程序开发过程中,我们经常需要生成随机数来模拟数据或者做一些随机操作。在 C++ 中,我们可以使用 random
头文件中的函数来生成随机数。本文将介绍如何在 C++ 中的两个数字之间生成随机数。
std::rand()
函数C++ 中通过 std::rand()
函数来生成随机数。该函数生成的是一个从 0 到 RAND_MAX(通常为 32767)之间的随机整数。为了生成在两个数字之间的随机数,我们需要对生成的随机数进行一定的处理。以下是一个示例程序:
#include <iostream>
#include <cstdlib>
#include <ctime>
int main()
{
std::srand(std::time(nullptr)); // 使用时间作为种子
int a = 10, b = 20; // 生成在 a 和 b 之间的随机数
int random_number = std::rand() % (b - a + 1) + a;
std::cout << random_number << std::endl;
return 0;
}
上述程序中,我们使用了 std::srand()
函数来设置随机数生成器的种子,使得每次生成的随机数不同。我们将 a
和 b
分别设置为 10 和 20,然后使用 std::rand() % (b - a + 1) + a
来生成 a
和 b
之间的随机数。具体地,我们将 std::rand()
函数生成的随机数对 (b - a + 1)
取模,得到的余数加上 a
,就可以得到在 a
和 b
之间的随机数了。
C++11 中提供了更好的随机数生成方式,可以使用随机数引擎来生成更加高质量的随机数。以下是一个示例程序:
#include <iostream>
#include <random>
int main()
{
std::random_device rd; // 使用硬件随机数生成器作为种子
std::mt19937 gen(rd()); // 使用 Mersenne Twister 引擎
int a = 10, b = 20; // 生成在 a 和 b 之间的随机数
std::uniform_int_distribution<> dis(a, b);
int random_number = dis(gen);
std::cout << random_number << std::endl;
return 0;
}
上述程序中,我们使用了 std::random_device
作为随机数生成器的种子,使用了 Mersenne Twister 引擎来生成随机数。std::uniform_int_distribution<>
类型的对象可以用于生成指定范围内的随机整数,使用 dis(gen)
来生成在 a
和 b
之间的随机数。
本文介绍了 C++ 中两种生成在两个数字之间的随机数的方式,分别是使用 std::rand()
函数和使用 C++11 中的随机数引擎。在实际开发中,我们应该根据具体的应用场景选择适合的方式来生成随机数。