Pseudozufallszahlengenerator gibt dieselbe erste Ausgabe aus, verhält sich dann aber wie erwartet
Wenn Sie die Zufallsklasse und einen Startwert für die Zeit (NULL) verwenden, gibt die gleichmäßige Verteilung auch bei unterschiedlichen Kompilierungen immer die gleiche erste Ausgabe aus, aber nachdem sich die erste Ausgabe so verhält, wie Sie es von einem Pseudozufallszahlengenerator erwarten würden.
Ist das ein Konstruktionsfehler oder verwende ich es falsch?
MWE:
#include <ctime>
#include <iostream>
#include <random>
using namespace std;
default_random_engine gen(time(NULL));
uniform_int_distribution<int> dist(10,200);
int main()
{
for(int i = 0; i < 5; i++)
cout<<dist(gen)<<endl;
return 0;
}
Die ersten drei Male, die ich dieses Programm ausgeführt habe, erhalte ich Ausgaben von:
57
134
125
136
112
Vor dem zweiten Versuch habe ich beschlossen, eine leere Zeile zwischen @ zu löscheuniform_int_distribution
undint main()
Nur um zu sehen, ob der Startwert auf der Kompilierungszeit basiert, spielt das keine Rolle.
57
84
163
42
146
Nur wieder am Laufen:
57
73
181
160
46
So auf meinen Läufen bekomme ich immer57
zuerst, was natürlich nicht das Ende der Welt ist, wenn ich verschiedene Ausgaben haben will, kann ich die erste Ausgabe wegwerfen. Aber es stellt sich die Frage, ob dies beabsichtigt ist (wenn ja, warum?) Oder ob ich den Generator irgendwie missbrauche (wenn ja, wie?).