21xrx.com
2024-11-05 18:59:11 Tuesday
登录
文章检索 我的文章 写文章
C++如何生成随机数?
2023-07-07 17:35:33 深夜i     --     --
C++ 生成 随机数

C++是一种强大且灵活的编程语言,可以轻松生成随机数。随机数在编程中应用广泛,如加密、模拟和游戏等领域。 C++提供了许多不同的库用于生成随机数,这些库都可以按照不同的方式生成伪随机数。此外,C++还可以调用操作系统提供的True Random Number Generator(TRNG)来生成真随机数,这种方式生成的随机数更安全可靠。

下面我们介绍几种常见的生成随机数的方式:

1. 使用rand()函数生成伪随机数

rand()函数可以生成[0,RAND_MAX]之间的伪随机数。要使用它,需要包含 头文件,并使用srand()函数设置一个种子,可以使用time()函数获取时间戳作为种子。下面是一个简单示例:


#include <iostream>

#include <cstdlib>

#include <ctime>

int main()

{

  srand(time(NULL)); // 设置随机种子为当前时间

  int random_num = rand() % 100; // 生成0-99之间的随机数

  std::cout << "随机数:" << random_num << std::endl;

  return 0;

}

2. 使用随机数引擎生成伪随机数

C++11引入了新的随机数引擎和分布方式来产生更加高质量的伪随机数。主要包括三个类:random_device、mt19937和uniform_int_distribution。用法如下:


#include <iostream>

#include <random>

int main()

{

  std::random_device rd; // 用于生成种子

  std::mt19937 gen(rd()); // 用mt19937引擎设置生成器的初始状态

  std::uniform_int_distribution<> dis(1, 100); // 用uniform_int_distribution分布生成1-100之间的随机数

  std::cout << "随机数:" << dis(gen) << std::endl;

  return 0;

}

3. 使用操作系统生成真随机数

操作系统可以提供真随机数,但是由于获取真随机数需要较长的时间,所以需要等待一段时间。C++11提供了头文件 的函数entropy()来检查是否支持真随机数生成器。如果支持,我们可以使用 中提供的随机数引擎和分布设置来随机生成数。下面是一个调用操作系统生成真随机数的示例:


#include <iostream>

#include <random>

int main()

{

  std::random_device rd; // 用于生成种子

  if (rd.entropy() > 0) { // 检测是否支持真随机数生成器

    std::cout << "支持真随机数生成器" << std::endl;

    std::cout << "随机数:" << rd() << std::endl;

  } else

    std::cout << "不支持真随机数生成器" << std::endl;

  

  return 0;

}

总结

随机数在C++编程中应用广泛,大量的库和函数支持生成伪随机数和真随机数。C++11引入的 库提供了更加高质量的伪随机数引擎和分布函数,可以灵活地控制随机数的区间和分布。如果需要生成更加安全可靠的随机数,可以使用操作系统提供的真随机数生成器。

  
  

评论区

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