holyya.com
2025-09-05 03:29:38 Friday
登录
文章检索 我的文章 写文章
C++如何生成随机整数
2023-07-02 14:23:03 深夜i     --     --
C++ 生成 随机整数

在C++中,生成随机整数是一项常见的任务。随机整数可以用于模拟、加密和其他许多应用程序。本文将介绍三种在C++中生成随机整数的方法。

1. 使用rand函数生成随机整数

rand() 函数是C++内置的随机数生成函数,其返回值为一个 0 到 RAND_MAX 之间的整数(RAND_MAX 是一个宏定义,在标准头文件 stdlib.h 中定义)。因此,要生成一个随机整数,您需要将 rand() 返回的整数映射到您想要的范围内。

例如,如果您想生成一个 0 到 100 之间的随机整数,可以使用以下代码:


#include <cstdlib>

#include <ctime>

#include <iostream>

int main()

{

  srand(time(NULL)); //初始化随机数种子

  int randomInt = rand() % 101;

  std::cout << randomInt << std::endl;

  

  return 0;

}

上面代码中的 srand(time(NULL)) 用于初始化随机数种子,以避免每次运行程序时都得到相同的随机数序列。

2. 使用 C++ 11 新引入的 Random 库

C++ 11 引入了一个新的头文件 random,该文件包含了几个更具可控性和可重复性的随机数生成器。

例如,要生成一个 0 到 100 之间的随机整数,可以使用以下代码:


#include <random>

#include <iostream>

int main()

{

  std::mt19937 rng{std::random_device{}()};

  std::uniform_int_distribution<int> dist(0, 100);

  int randomInt = dist(rng);

  std::cout << randomInt << std::endl;

  return 0;

}

上面代码中的 std::mt19937 是一个 32 位随机数生成器,它被初始化为使用 std::random_device 作为种子。 std::uniform_int_distribution 可以帮助您控制生成的随机数所在范围。

3. 使用 Boost 库中的 Random 库

Boost 是一个大型的 C++ 库集合,其中包括了一个广泛的随机数库。 Boost.Random 库提供了大量的可定制选项,使您能够生成各种类型的随机数。

例如,要生成一个 0 到 100 之间的随机整数,可以使用以下代码:


#include <boost/random.hpp>

#include <iostream>

int main()

{

  boost::random::mt19937 rng;

  boost::random::uniform_int_distribution<> dist(0, 100);

  int randomInt = dist(rng);

  std::cout << randomInt << std::endl;

  return 0;

}

上面代码中的 boost::random::mt19937 和 boost::random::uniform_int_distribution<> 分别用于生成 32 位随机数和指定随机数所在范围。

综上所述,上面三种方法都可以用于在 C++ 中生成随机整数,每种方法都有其特点和用途。根据实际需求,选择最适合的方法即可。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复