#include <random>
#include <chrono>
#include <iostream>
int main(void) {
// 从epoch(1970年1月1日00:00:00 UTC)开始经过的纳秒数,unsigned类型会截断这个值
unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
std::default_random_engine generator(seed);
// 第一个参数为高斯分布的平均值,第二个参数为标准差
std::normal_distribution<double> distribution(0.0, 1.0);
for (int i = 0; i < 10; ++i)
std::cout << distribution(generator) << std::endl;
}
该方法是C++11引入的,编译时需要加上参数:g++ -std=c++11 main.cc
如果generator构造时没有参数,则每次执行main生成的随机数序列都是一样的。generator的参数seed也可以用time(NULL)来产生,不过time(NULL)产生的结果是以秒为单位的整数,所以两次执行之间间隔过短使time(NULL)结果相同时,两次执行也会产生一样的随机数序列