C++标准库 高斯分布(正态分布)随机生成

#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)结果相同时,两次执行也会产生一样的随机数序列

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章