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))
在同一秒内进行评估。