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