2016-04-27 7 views
-1

Ich versuche Array von Strings zu mischen und das gleiche Array wieder nach dem Versuch Random_shuffle wie unten erhalten.C++ Array Shuffle funktioniert nicht

Die gemischte Array ist in der gleichen Reihenfolge in der mehrfachen Ausführung meines Programms, wenn ich es ausdrucken.

+1

[Works für mich ...] (http://coliru.stacked-crooked.com/a/f97c5955409dea16) –

+1

Und [mich] (http://ideone.com/s4QDSj). Haben Sie den Zufallszahlengenerator gesetzt? – StoryTeller

+0

@MohitJain, ich denke, es ist von '1' gesetzt. Und die Frage * ist * über 'std :: random_shuffle'. Vielleicht meintest du 'std :: shuffle'? – StoryTeller

Antwort

3

Sie haben wahrscheinlich vergessen, den Zufallsgenerator zu seed. Dies sollte mindestens und vorzugsweise einmal aufgerufen werden. Am Anfang des Programms.

std::srand(std::time(0)); 
+0

Die Sprache der Frage ist mehrdeutig, Sie haben es richtig verstanden. –

1

In std::random_shuffle der Zufallszahlengenerator ist die Implementierung definiert, aber die Funktion std::rand wird häufig verwendet.

Wenn Sie nicht std::srand verwenden, um den RNG zu säen, erhalten Sie die gleiche gemischte Reihenfolge, wenn Sie das Programm ausführen.

Eine mögliche Lösung ist die Verwendung von std::srand mit std::time, wie von kake_fisk in this answer vorgeschlagen.