La srand va chiamata solo una volta all'inizio del programma; il tuo codice invece la chiama prima di ogni rand, reinizializzando così il generatore di numeri casuali ogni volta allo stesso valore (time(NULL) cambia solo ogni secondo!) ed ottenendo così sempre lo stesso numero.