Zufallszahlen mit C++0x
Von: Martin Senst (martin.senst@iss.rwth-aachen.de) [Profil]
Datum: 20.05.2009 18:21
Message-ID: <77ip0kF1gouk6U1@mid.dfncis.de>
Newsgroup: de.comp.lang.iso-c++
Datum: 20.05.2009 18:21
Message-ID: <77ip0kF1gouk6U1@mid.dfncis.de>
Newsgroup: de.comp.lang.iso-c++
Hallo,
das folgende Programm läuft bei mir ohne Probleme:
#include <tr1/random>
#include <iostream>
using namespace std;
using namespace std::tr1;
int main()
{
normal_distribution<> dist;
mt19937 mt;
variate_generator<mt19937, normal_distribution<> > gen(mt, dist);
cout << gen() << endl;
// cout << dist(mt) << endl;
}
Wenn ich jedoch den variate_generator nicht benutze sondern nur dist(mt)
aufrufe (siehe auskommentierte Zeile) bleibt das Programm hängen. Getestet
habe ich das mit g++ 4.3.3 und 4.4.0, jeweils mit -std=c++0x.
Das Problem tritt auch nur mit der normal_distribution auf. Wenn ich
stattdessen z.B. eine bernoulli_distribution nehme, funktioniert der Aufruf
dist(mt).
Übersehe ich da jetzt einen Fehler, oder ist das ein Bug im g++? Was mich
insbesondere wundert ist, dass variate_generator im operator() auch nichts
anderes zu machen scheint als "return _M_dist(_M_engine);"
Vielen Dank!
Martin
[ Auf dieses Posting antworten ]Antworten
- Heiko Bauke (21.05.2009 19:03)
- Martin Senst (24.05.2009 17:31)
