📅  最后修改于: 2023-12-03 14:59:37.514000             🧑  作者: Mango
在C++中,我们可以使用标准库中的随机数生成器来生成随机数。在本文中,我们将介绍如何使用随机数生成器来生成不同范围的随机数。
下面是一个简单的示例代码,用于生成[0,1)之间的随机数:
#include <iostream>
#include <cstdlib>
#include <ctime>
int main()
{
std::srand(std::time(nullptr)); // 使用当前时间作为随机数生成器的种子
double random_number = std::rand() / static_cast<double>(RAND_MAX);
std::cout << "Random number between 0 and 1: " << random_number << std::endl;
return 0;
}
在这里,我们使用了 std::rand()
函数来生成一个随机整数,然后将其除以 RAND_MAX
来得到[0,1)之间的随机数。我们还使用了 std::srand()
函数,将当前时间作为随机数生成器的种子,以确保每次运行程序时生成的随机数都不同。
如果需要生成指定范围内的随机整数,我们可以使用以下代码:
#include <iostream>
#include <cstdlib>
#include <ctime>
int main()
{
std::srand(std::time(nullptr)); // 使用当前时间作为随机数生成器的种子
int min_number = 1;
int max_number = 100;
int range = max_number - min_number + 1;
int random_number = min_number + std::rand() % range;
std::cout << "Random number between " << min_number << " and " << max_number << ": " << random_number << std::endl;
return 0;
}
在这里,我们通过 min_number
和 max_number
变量指定了随机整数的范围。我们使用了 std::rand() % range
来生成指定范围内的随机整数。我们还使用了 std::srand()
函数,将当前时间作为随机数生成器的种子。
如果需要生成随机的布尔值,我们可以使用以下代码:
#include <iostream>
#include <cstdlib>
#include <ctime>
int main()
{
std::srand(std::time(nullptr)); // 使用当前时间作为随机数生成器的种子
bool random_boolean = std::rand() % 2 == 1;
std::cout << "Random boolean value: " << std::boolalpha << random_boolean << std::endl;
return 0;
}
在这里,我们使用了 std::rand() % 2 == 1
来随机生成布尔值。由于 std::rand() % 2
只能生成0或1,我们需要将其转换为 true
或 false
值。我们还使用了 std::boolalpha
标志来打印布尔值,以便将其打印为单词 'true' 或 'false',而不是数字1或0。
如果我们使用C++11或更高版本的C++,可以使用 <random>
头文件中的随机数生成器来生成随机数。以下是一个使用C++11随机数生成器生成[0,1)之间的随机数的示例代码:
#include <iostream>
#include <random>
int main()
{
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_real_distribution<> dis(0, 1);
double random_number = dis(gen);
std::cout << "Random number between 0 and 1: " << random_number << std::endl;
return 0;
}
在这里,我们使用 std::random_device
来获取真正的随机数种子。然后,我们使用 std::mt19937
来创建随机数生成器对象 gen
。我们使用 std::uniform_real_distribution<>
来创建分布对象 dis
,该对象指定了我们需要生成的随机数的范围。然后,我们使用 dis(gen)
来生成随机数。