Der folgende Code zeigt, wie in C++ 11 zufällig zu verdoppeln. In dieser Lösung jedes Mal, wenn ich dieses Programm ausführen, sind die Ergebnisse gleich - ich weiß nicht warum? Wie kann ich es ändern, um bei jedem Programmstart eine andere Lösung zu erhalten?Zufällige Doppel C++ 11
#include <random>
int main(int argc, char **argv)
{
double lower_bound = 0.;
double upper_bound = 1.;
std::uniform_real_distribution<double> unif(lower_bound, upper_bound);
std::default_random_engine re;
double a_random_double = unif(re);
cout << a_random_double << endl;
return 0;
}
//compilation: "g++ -std=c++0x program_name.cpp -o program_name"
Geben Sie ihm einen Startwert. Übrigens ist die Fähigkeit, die gleiche Sequenz von "zufälligen" Werten zu erzeugen, für das Testen sehr gut. –
Es gibt keinen guten Grund, 'default_random_engine' zu verwenden. Es ist im Grunde die "Ich interessiere mich nicht" -Maschine, aber dann warum verwenden Sie es, sagen wir, "mt19937", die hohe Qualität * und * kürzer zu tippen ist. –
@CoryNelson 'default_random_engine' ist die offensichtliche Wahl für jemanden, der nichts über zufällige Engines weiß. Deshalb existiert es. Ein Neuling, der zuerst "" und seine Dutzende von Optionen für Engines und Distributionen betrachtet, wird wahrscheinlich nicht das Niveau der Forschung erreichen, das erforderlich ist, um intelligente Entscheidungen zu treffen, sie wollen nur etwas, das funktioniert. Wir sollten einfach glücklich sein, dass sie 'rand()' nicht benutzen. –
Casey