C中的随机值保持不变

我对C有点新,但我遇到过各种不同语言的同样问题。 当使用srand(time(NULL))生成随机数时,这些值在第一次出现时很好,但在此之后的任何时间它都保持相同的值。 我尝试将所有变量重置为上面的新值,无效。

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); } 

这个想法是打印多个10变量方程,变量aj代表方程中每个变量的系数。 问题在于,无论我做什么,它每次都生成并打印相同的等式,它不会将新的随机值重新分配给变量。

作为旁注,我知道我的代码现在看起来并不像它完成任何事情,但这只是我复制,粘贴和修改的片段,因此您可以看到我分配随机值的方法。

我非常感谢任何帮助,反馈或支持。

移动srand(time(NULL));while循环之外。

time(NULL)返回time_t结构,该结构正被转换为unsigned int (prototype: void srand( unsigned seed ); ),存储自Epoch以来的总秒数:00:00:00协调世界时(UTC), 1970年1月1日星期四。

并且循环执行速度很快,因此每个srand(time(NULL))在同一秒内进行评估。