gpt4 book ai didi

c - C 中的随机值保持不变

转载 作者:行者123 更新时间:2023-12-02 08:37:53 26 4
gpt4 key购买 nike

我对 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 变量方程,变量 a-j 代表方程中每个变量的系数。问题是无论我做什么,它每次都会生成并打印相同的方程式,它不会为变量重新分配新的随机值。

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

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

最佳答案

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

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

而且循环执行得很快,所以每个 srand(time(NULL)) 在同一秒内被评估。

关于c - C 中的随机值保持不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19435685/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com