📜  c++ 中的随机数(1)

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

C++ 中的随机数

在编写程序时,通常需要用到随机数。C++ 标准库中提供了很多用于生成随机数的函数和类。在本文中,我们将探讨如何在 C++ 中生成随机数。

1. 使用 rand() 函数

rand() 函数是 C++ 标准库中最基本的用于生成随机数的函数。它的定义在头文件 <cstdlib> 中。使用该函数需要以下步骤:

步骤 1

在程序中包含头文件 <cstdlib>

#include <cstdlib>
步骤 2

调用 rand() 函数。该函数将返回一个随机数,这个随机数的范围是 0 到 RAND_MAX 之间的一个整数。RAND_MAX 是一个常量,表示随机数的最大值。

int randomNumber = rand();
步骤 3

将生成的随机数转换为所需要的范围。例如,如果需要生成 1 到 10 之间的随机数,需要使用模运算将随机数限制在这个范围内。

int randomNumber = rand() % 10 + 1;

下面是一个完整的例子,生成 1 到 10 之间的随机数并输出:

#include <cstdlib>
#include <iostream>

int main()
{
    int randomNumber = rand() % 10 + 1;
    std::cout << "Random number is: " << randomNumber << std::endl;

    return 0;
}
2. 使用随机数引擎和分布

除了 rand() 函数,C++ 标准库中还提供了其他的随机数生成方法,例如随机数引擎和分布。

随机数引擎

随机数引擎是一个对象,用于生成随机数序列。C++ 标准库中提供了多种随机数引擎,包括线性同余算法和梅森旋转算法等。使用随机数引擎需要以下步骤:

  1. 在程序中包含头文件 <random>
  2. 创建一个随机数引擎对象。
  3. 设置随机数引擎的种子。
  4. 调用随机数引擎的 operator() 函数生成随机数。

下面是一个例子,使用线性同余算法生成随机数:

#include <random>
#include <iostream>

int main()
{
    std::default_random_engine eng(42);
    std::uniform_int_distribution<int> dist(1, 10);
    int randomNumber = dist(eng);
    std::cout << "Random number is: " << randomNumber << std::endl;

    return 0;
}

在这个例子中,我们创建了一个名为 eng 的随机数引擎对象,使用种子 42 初始化。然后创建了一个名为 dist 的均匀整数分布对象,用于限制随机数的范围在 1 到 10 之间。最后,调用 dist(eng) 函数生成随机数。

随机数分布

随机数分布是一个对象,用于限制随机数的范围和分布方式。C++ 标准库中提供了多种随机数分布,包括均匀分布、正态分布和泊松分布等。使用随机数分布需要以下步骤:

  1. 在程序中包含头文件 <random>
  2. 创建一个随机数引擎对象。
  3. 创建一个随机数分布对象。
  4. 调用随机数分布对象的 operator() 函数生成随机数。

下面是一个例子,使用正态分布生成随机数:

#include <random>
#include <iostream>

int main()
{
    std::default_random_engine eng(42);
    std::normal_distribution<double> dist(5, 2);
    double randomNumber = dist(eng);
    std::cout << "Random number is: " << randomNumber << std::endl;

    return 0;
}

在这个例子中,我们创建了一个名为 eng 的随机数引擎对象,使用种子 42 初始化。然后创建了一个名为 dist 的正态分布对象,用于生成均值为 5,标准差为 2 的正态分布随机数。最后,调用 dist(eng) 函数生成随机数。