srand(time(NULL)); は乱数の発生順を、その内容によって初期化する、。
time(NULL)は1秒以内なら同じ数値を返すから1秒以内なら同じで当然。

そもそもsrandを毎回呼ぶ必要はない。