Vorweg: Es gibt keine "Regel", dass hier kein Quellcode gepostet werden darf. Ich mag nur keine Fragen, die offensichtlich zum Ziel haben, dass fertige Lösungen geliefert werden, weil der Fragesteller gar kein Interesse daran hat, die Sache wirklich zu verstehen. Aber Du gibst Dir ja nun redlich Mühe
Zur Sache:
Deine Routine, doppelte Zahlen zu finden, ist richtig. Der Fehler liegt darin, dass Du nach jeder neuen Zufallszahl, die Du im Array ablegst, die Sortierfunktion aufrufst, und die (sortierte) Zahl ausgibst. Das kann nicht funktionieren. Du erwartest doch nicht wirklich, dass dir das Programm, nachdem es die erste Zufallszahl erzeugt hat, schon weiß, welche die kleinste wird
Du must zuerst das Array füllen, dann EINMAL die Sortierfunktion aufrufen, und dann das sortierte Array ausgeben. Dafür wirst Du wohl oder übel zwei getrennte Schleifen brauchen.