Hallo,
mein Ziel ist es, ein Array zu umzusortieren, dass die Werte, die in meinem Beispiel gleich der Indexnummer sind, willkürlich angeordnet sind.
Ich könnte natürlich solange Zufallszahlen generieren lassen, abprüfen, ob die Zahl bereits vorkam, und diese noch nicht vorgekommene Zahl dann in ein neues Array schreiben, aber das erscheint mir ziemlich ineffizient zu sein. Außerdem könnte es theoretisch ja möglich sein, dass ich bis in alle Ewigkeit genau die letzten Zufallszahlen suche, und diese nie generiert werden, da die Wahrscheinlichkeit, diese Zahl zu finden, mit der steigenden Anzahl der bereits gesetzten Zahlen immer geringer wird. Je größer das Array ist, desto geringer ist auch die Chance, die noch nicht vorgekommenen Zahlen zu finden.
Die beste Idee wäre natürlich Zahlen aus einer Zahlenmenge zufällig auszuwählen, aber wie könnte ich das in C++ realisieren? Zufallszahlengeneratoren wie srand() decken ja nur einen Von-bis-Wert ab und können Zahlen in dieser Von-bis-Zahlenreihe nicht einfach auslassen.
Meine beste Idee wäre, die übrig gebliebenen, noch nicht vorgekommenen Werte bei jedem "Durchlauf" in ein Array zu schreiben, das genauso groß ist, wie die Menge der restlichen Zahlen ist, und eine Zufallssuche mit dem Wertebereich 0-ARRAYLÄNGE auf dieses Array loszulassen. Gibt es noch einen besseren Weg?
Markus