gpt4 book ai didi

c - 虽然永远不会以随机数结束

转载 作者:太空宇宙 更新时间:2023-11-04 00:18:33 25 4
gpt4 key购买 nike

我正在尝试获取一个随机数,如果它超过另一个数字则让 while 结束:

int main() // random
{
int x= 50;
int i;

while (i>x){
srand(time(0));
int i = rand() %100;
printf("laenge %d", i);
}
}

while 开始很好并生成不同的数字(例如 1.000 乘以 11、1.000 乘以 75...)但它永远不会结束。

我有两个问题,为什么没有结束?为什么它在控制台中得到相同随机数的 1.000 倍,然后是下一个随机数的 1.000 倍?

如果我添加:

int main() // random
{
int x= 50;
int i;

while (i>x){
srand(time(0));
int i = rand() %100;
printf("laenge %d", i);
sleep(1);
}
}

sleep (1);整个代码不再有效。

最佳答案

你在这里重新声明i:

int i = rand() %100;
^^^

所以它是一个不同的 i 然后用来检查 while 循环 在这里:

while (i>x){

这也意味着您需要在第一个声明中初始化 i,因为使用未初始化的变量是 undefined behavior .

你应该只调用一次srand,所以把它移到循环之外。阅读 How can I get random integers in a certain range? 也是个好主意来自 C FAQ。在 [M, N] 范围内生成随机 整数 的推荐公式是:

M + rand() / (RAND_MAX / (N - M + 1) + 1)

在你的情况下是:

rand() / (RAND_MAX / (100 + 1) + 1)

关于c - 虽然永远不会以随机数结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20166253/

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