C++生成随机数

Talk is cheap. Show me the code.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <random>
#include <iostream>

int main()
{
std::random_device rd;
std::mt19937 mt(rd());
std::uniform_int_distribution<int> distrib_int(0, 10);
std::uniform_real_distribution<double> distrib_double(0.0, 10.0);

for (size_t i = 0; i < 100; i++)
{
std::cout << distrib_int(mt) << " " << distrib_double(mt) << std::endl;
}
}

分以下几个步骤:

  1. random_device 生成真随机数
  2. mt19937 随机数引擎
  3. uniform_int_distribution 随机数分布器,指定随机数分布,如平均分布(uniform_int_distributionuniform_real_distribution), 正态分布(normal_distribution)
  4. dist(mt) 生成最终的随机数,范围是随机数分布器的设定值,左右都为闭区间
  5. 本示例即为生成 [0, 10] 之间平均分布的整数和浮点数