Ich versuche, die C++ STD TechnicalReport1 Erweiterungen verwenden Nummern einer Normalverteilung zu erzeugen, aber dieser Code (angepasst von this article):C++ TR1: wie die normale_verteilung zu verwenden?
mt19937 eng;
eng.seed(SEED);
normal_distribution<double> dist;
// XXX if I use the one below it exits the for loop
// uniform_int<int> dist(1, 52);
for (unsigned int i = 0; i < 1000; ++i) {
cout << "Generating " << i << "-th value" << endl;
cout << dist(eng) << endl;
}
druckt nur 1 „Erstellen ...“ Protokollmeldung , dann beendet nie die for-Schleife! Wenn ich die Distribution verwende, habe ich sie stattdessen auskommentiert, sie endet, also frage ich mich, was ich falsch mache. Irgendeine Idee?
Vielen Dank!
Danke Mann, es funktioniert wie ein Charme, aber ich frage mich, warum mit dieser Maschine funktioniert, und nicht mit den anderen .. – puccio
Offensichtlich ist der einzige Unterschied, dass Sie die verwenden mt19937 Zahlengenerator, während Jagannath die std :: tr1 :: ranlux64_base_01 verwendet. Logisch, ich vermute, dass der Fehler in Ihrer Implementierung des mt19937-Objekts (Algo, von dem ich noch nie zuvor gehört hatte, thx dafür :-)), die nicht Teil der Std-Bibliothek ist. –
Kann man eine solche for-Schleife beim Zeichnen von Zufallszahlen vektorisieren? Ich erinnere mich, dass Sie eine Schleife, die einen Funktionsaufruf hat, nicht vektorisieren können. – Lindon