Los valores aleatorios siguen siendo los mismos en C

Soy algo nuevo en C, pero he tenido este mismo problema con una variedad de idiomas diferentes. Cuando se usa srand (tiempo (NULL)) para generar números aleatorios, los valores salen bien la primera vez, pero en cualquier momento después solo mantiene los mismos valores. Intenté restablecer todas las variables a nuevos valores anteriores sin ningún efecto.

while(Ui <= (uInput - 1)) { printf("Input answer %d: ", (Ui + 1)); scanf("%d", &answers[Ui]); Ui++; srand(time(NULL)); a = (rand() % 25 + 1) - (rand() % 25 + 1); b = (rand() % 25 + 1) - (rand() % 25 + 1); c = (rand() % 25 + 1) - (rand() % 25 + 1); d = (rand() % 25 + 1) - (rand() % 25 + 1); e = (rand() % 25 + 1) - (rand() % 25 + 1); f = (rand() % 25 + 1) - (rand() % 25 + 1); g = (rand() % 25 + 1) - (rand() % 25 + 1); h = (rand() % 25 + 1) - (rand() % 25 + 1); i = (rand() % 25 + 1) - (rand() % 25 + 1); j = (rand() % 25 + 1) - (rand() % 25 + 1); } 

La idea es que esto imprima varias ecuaciones de 10 variables, las variables aj representan el coeficiente de cada variable en la ecuación. El problema es que no importa lo que haga, genera e imprime la misma ecuación cada vez que no reasigna nuevos valores aleatorios a las variables.

Como nota al margen, sé que mi código no parece que logre nada en este momento, pero esto es solo un fragmento que copié, pegué y modifiqué para que pueda ver mi método para asignar valores aleatorios.

Aprecio enormemente cualquier ayuda, comentario o apoyo.

Mueve el srand(time(NULL)); fuera del bucle while.

time(NULL) devuelve la estructura time_t , que se está convirtiendo en unsigned int (prototipo: void srand( unsigned seed ); ), almacenando el número total de segundos desde la Época: 00:00:00 Tiempo Universal Coordinado (UTC), Jueves, 1 de enero de 1970.

Y el bucle se ejecuta tan rápido, por lo que cada srand(time(NULL)) se evalúa en el mismo segundo.