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)結果相同時,兩次執行也會產生一樣的隨機數序列

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