2016-11-09 3 views
1

Ich habe default_random_engine verwendet, um eine Liste von verschiedenen Zahlen zu generieren, aber sie sind zufällig identisch. Ich frage mich, um verschiedene Zahlen zu generieren? Ich weiß, srand(). Kann ich diese Standard-Engine verwenden?Wie uniform_real_distribution verwenden, um verschiedene Zahlen zu generieren?

default_random_engine engine{ static_cast<unsigned int>(time(0)) }; 
uniform_real_distribution<double>randomNumber{ 50,100 }; 
for(int i=0; i<10;i++){ 
    a[i]= randomNumber(engine); 
    } 
+0

Wenn Sie sagen, sie sind alle gleich, meinst du, alle Zahlen sind die gleichen in einem Lauf oder dass Sie jedes Mal die gleiche Anzahl von Zahlen erhalten? –

+1

Beginnen Sie nicht mit 'time (0)', säen Sie mit 'operator()' aus einer einzigen Instanz von 'std :: random_device', So oder so, idealerweise nur einmal für Ihren gesamten Prozess. – WhozCraig

+0

@PaulRooney Jedes Mal, wenn ich ein anderes Array von Zufallszahlen erzeuge. In diesem Array gibt es zufällig dieselben Zahlen (Elemente). Ich frage mich, wie kann ich jedes Element in diesem Array einzigartig machen? –

Antwort

2

Dieses Verhalten ist von Entwurf für Zufallszahlengeneratoren. Sie müssen den Startparameter für den Zufallsgenerator festlegen, wenn Sie Ihr Programm starten.

Wenn Sie die C++ - Erweiterungen haben @WhozGraig empfiehlt, dass sie am besten sind. Es ist sehr schlampig, aber viele Leute benutzen die time() -Funktion, um bei jedem Programmstart eine andere Nummer zu bekommen.

Verwandte Themen