I just had the same problem. The seeds were too similar even after tens of seconds. Since I get my numbers in this fashion:
int FlRandomInt(int LowerLimit, int UpperLimit)
{
int Result;
Result = rand();
Result=LowerLimit+Result*(UpperLimit-LowerLimit)/RAND_MAX;
return Result;
}
which I know is not the best way to go for integers, but I use the same procedure to generate random floats and doubles, so it's good to verify if those are significantly different, instead of just at the last decimals.
Anyway just wanted to post a solution that works fine for me. It's simply multiplying the time seed by 100:
srand(( unsigned )time( 0 ) * 100 );
Hope it helps, even if I'm sure there are more elegant ways around the problem.