我有一個簡單的代碼示例:爲什麼GCC和MSVC std :: normal_distribution是不同的?
#include <iostream>
#include <random>
using namespace std;
int main() {
minstd_rand0 gen(1);
uniform_real_distribution<double> dist(0.0, 1.0);
for(int i = 0; i < 10; ++i) {
cout << "1 " << dist(gen) << endl;
}
normal_distribution<double> dist2(0.0, 1.0);
minstd_rand0 gen2(1);
for(int i = 0; i < 10; ++i) {
cout << "2 " << dist2(gen2) << endl;
}
return 0;
}
我於gcc和msvc編譯。我得到STD代碼diferent結果!(
那麼,爲什麼GCC和MSVC std::normal_distribution
結果diferent對於相同的種子和發電機,最重要的是,如何力他們是一樣的嗎?
迷人。我本來期望他們有100%不同的或100%相同的數字。他們是相同的,但重新排列的事實打擊了我的想法。 –
而'uniform_real_distribution'結果與預期相同! – DuckQueen
@MooingDuck:這裏的標準算法每次迭代產生兩個值。看起來他們都使用相同的算法實現,但兩者的哪一個返回並緩存的不同。 – Hurkyl