Hallo,
srand(time());
EXTREM schlechte Idee. Das gleiche gilt für Konstrukte mit microtime(). Stefan Esser hat in seinem Blog dargelegt, warum manuelles Initialisieren des Zufallszahlgenerators eine extrem schlechte Idee ist (englischer Link).
Wenn Du den Zufallszahlgenerator dann auch noch mit einer bekannten oder zumindest extrem leicht zu erratenden Größe initialisierst (der aktuellen Zeit), dann führt das dazu, dass die Zahlen vorhersagbar sind. Wenn man den Zufallszahlgenerator nur dazu nutzt, um zum Beispiel auf der Startseite "zufällig" andere Artikel hervorzuheben, dann ist das noch in Ordnung. Wenn Du damit allerdings etwas sicherheitskritisches Programmieren willst (Dein Code sieht nach einem Passwortgenerator aus, das ist sicherheitskritisch), dann solltest Du auf *jeden* Fall die Finger von so etwas lassen.
Rufe einfach rand() auf, um Dir Zufallszahlen liefern zu lassen und kümmere Dich nicht um die Initialisierung desselben.
Viele Grüße,
Christian