Ну так не надо же второй раз srand запускать!
Ясен пень, функция time секунды возвращает.
Могу привести несколько вариантов инициализации ГСЧ, в т.ч. по /dev/random и /dev/urandom, но в конкретном примере за глаза хватит srand(time(NULL)), выполненной в начале main().
Вот и по-быстренькому у себя
пример нашел: srand48 запускается с аргументом, значение которого читается из /dev/random (кстати, здесь я переборщил: на самом деле, как показали исследования, всегда можно вместо /dev/random использовать /dev/urandom, т.к. фактически никакой разницы не будет). Если же в системе по какой-то причине нет /dev/random (ну, я такую причину придумать не смог: разве что админ будет приколистом и запретит рядовым юзерам оттуда читать), то соль берется из значения текущего времени (но уже с более высоким разрешением).