Fab*_*gue 1 c random while-loop
我试图得到一个随机数,并且如果它超过另一个数字则具有while结尾:
int main() // random
{
int x= 50;
int i;
while (i>x){
srand(time(0));
int i = rand() %100;
printf("laenge %d", i);
}
}
Run Code Online (Sandbox Code Playgroud)
同时开始很好并产生不同的数字(如1.000倍11,1.000倍75 ......)但它永远不会结束.
我有2个问题,为什么不结束?为什么它会在控制台中获得相同随机数的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);
}
}
Run Code Online (Sandbox Code Playgroud)
睡眠(1); 整个代码不再起作用了.
你重新宣布i:
int i = rand() %100;
^^^
Run Code Online (Sandbox Code Playgroud)
所以它i与用于检查while循环的用户不同:
while (i>x){
Run Code Online (Sandbox Code Playgroud)
这也意味着您需要i在第一个声明中初始化,因为使用未初始化的变量是未定义的行为.
你只应该拨打srand一次,所以把它移到循环之外.另外,最好阅读如何在一定范围内获得随机整数?来自C FAQ.在该范围内生成随机整数的推荐公式为[M, N]:
M + rand() / (RAND_MAX / (N - M + 1) + 1)
Run Code Online (Sandbox Code Playgroud)
在你的情况下将是:
rand() / (RAND_MAX / (100 + 1) + 1)
Run Code Online (Sandbox Code Playgroud)