📜  C ++程序生成随机数(1)

📅  最后修改于: 2023-12-03 14:59:37.514000             🧑  作者: Mango

C++程序生成随机数

在C++中,我们可以使用标准库中的随机数生成器来生成随机数。在本文中,我们将介绍如何使用随机数生成器来生成不同范围的随机数。

生成[0,1)之间的随机数

下面是一个简单的示例代码,用于生成[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_numbermax_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,我们需要将其转换为 truefalse 值。我们还使用了 std::boolalpha 标志来打印布尔值,以便将其打印为单词 'true' 或 'false',而不是数字1或0。

使用C++11随机数生成器

如果我们使用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) 来生成随机数。