https://forum.html.it/forum/showthre...readid=2915912
srand reinizializza il generatore di numeri casuali con il seed che gli passi, e con time(NULL) lo inizializzi alla data+ora corrente (con precisione dl secondo). Se tu chiami sempre srand(time(NULL)) prima di chiamare rand(), tutti i numeri generati nello stesso secondo saranno uguali (visto che lo reinizializzi ad ogni chiamata).
Il punto quindi è: srand(time(NULL)) va richiamato una sola volta, all'inizio del programma, per inizializzare l'RNG (altrimenti tutte le esecuzioni del programma produrrebbero la stessa sequenza di numeri casuali), mentre quando vuoi un numero casuale ti basta chiamare rand() senza chiamare di nuovo srand.