70

次のコードを使用して、C++<random>ライブラリをテストします。

コンパイルされた実行可能ファイルを実行するたびにまったく同じシーケンスが得られるのはなぜですか? rd()コンパイル時に決定論的ですか?実行ごとに異なる出力を取得するにはどうすればよいですか?

Windows 7 64 ビットの GCC 4.8.1。http://nuwen.net/mingw.htmlのMinGW ディストリビューションを使用します。

編集: Visual Studio で同じコードをテストしました。問題はない。出力は非決定論的です。これは、私が使用した mingw gcc 4.8.1 のバグである可能性があります。

#include <iostream>
#include <random>
using namespace std;

int main(){
 random_device rd;
 mt19937 mt(rd());
 uniform_int_distribution<int> dist(0,99);
 for (int i = 0; i< 16; ++i){
    cout<<dist(mt)<<" ";
 }
 cout <<endl;
}
4

5 に答える 5

4

コンストラクターにパラメーターを渡す必要がある場合があります。

https://gcc.gnu.org/onlinedocs/gcc-4.9.1/libstdc++/api/a00899.html

于 2014-09-16T05:42:49.477 に答える