Warum bekomme ich in der gleichen Reihenfolge für jeden Lauf mit std::random_device mit mingw gcc4.8.1?

Verwende ich folgenden code zum testen c++ <random> Bibliothek.

Warum erhalte ich die exakt gleiche Sequenz für jedes ausführen der kompilierten ausführbaren Datei? Ist rd() deterministische nach dem compilieren? Wie bekomme ich verschiedene Ausgabeformate für jeden Lauf?

GCC 4.8.1 unter Windows 7 64bit. Unter Verwendung von MinGW Verteilung von http://nuwen.net/mingw.html

EDIT: getestet habe ich das gleiche Stück code mit Visual Studio. Es ist kein problem. Die Ausgänge sind nicht deterministisch. Dies könnte ein bug in der mingw gcc 4.8.1 die ich verwendet habe.

#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;
}
Plattform-und compiler-bitte. Dies sollte definitiv nicht passieren, auch mit entropy() == 0. Wenn es funktioniert, das ist ein bug.
Nein, das ist nicht, wie random_device funktioniert.
Könnte man dem compiler drucken Sie den Inhalt des Makros _GLIBCXX_USE_RANDOM_TR1 bitte? Wenn es 0 ist, dann ist es mit mt19937 mit einem festen Samen als fallback.
Bug ist immer noch vorhanden in mingw-w64 mit gcc 4.9.2
Hat jemand versucht, einen bug-Report an die GCC so kann es behoben werden? Oder ist das zu viel verlangt?

InformationsquelleAutor ahala | 2013-09-18

Schreibe einen Kommentar