nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

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++
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