C++随机数

随机数在编程中有许多用途,C++提供了几种生成随机数的方法。本文将主要介绍C++中生成随机数的两种方式。

一、rand函数

最基本的生成随机数的方式是使用rand函数:

#include <cstdlib>

int num = rand(); // 生成一个随机整数

rand默认产生一个0到RAND_MAX之间的伪随机数。可以对结果取模来生成指定范围的随机数:

int dice = rand() % 6 + 1; // 摇骰子

rand每次调用都会产生同样的随机数序列,需要调用srand设置随机种子:

srand(time(nullptr)); // 设置随机种子

二、随机数引擎

C++11提供了更好的随机数引擎,定义在头文件中。

默认的随机数引擎是minstd_rand:

#include <random>

std::default_random_engine engine; 

int num = engine(); // 产生随机数

三、随机数分布

可以结合随机数分布产生不同范围和分布的随机数:

std::uniform_int_distribution<> distrib(1, 6);

int dice = distrib(engine); // 摇骰子

常见的分布有:均匀、高斯、泊松等分布。

四、种子

要实现可重现的随机序列,需要设置随机数引擎的种子:

engine.seed(10); // 设置种子

五、其它用法

  • shuffle 随机排列
  • random_shuffle 洗牌算法

熟练使用C++的随机数功能可以轻松实现蒙特卡罗方法、随机算法等应用,是编程很有用的一项技能。