请教C语言中while循环的问题,谢谢!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教C语言中while循环的问题,谢谢!相关的知识,希望对你有一定的参考价值。
while循环里有while循环,里外的while循环条件满足,且在执行里面的while循环时,
要是里面的while循环条件仍然满足,而外面的while循环不满足条件了,
此时会跳出里面的while循环吗??
谢谢
有例为证:
void main()
int i1 = 0;
int i2 = 1;
while (i1 == 0)
while (i2 < 100)
i1 = 1; //循环1不满足了
i2 ++; //循环2还是要走完的。
cout<<i1<<", "<<i2; //输出是1、100
system("pause");
参考技术A 不会跳出来的
因为里面的while还没执行完 参考技术B 执行完才会跳出来
while循环中的随机数[C编程] [重复]
【中文标题】while循环中的随机数[C编程] [重复]【英文标题】:random number in while loop [C programming] [duplicate] 【发布时间】:2014-11-30 00:56:25 【问题描述】:我试图在每次循环发生时创建 2 个随机数(介于 0-4 和 0-10 之间),但它总是给出相同的数字。 如果我多次运行该程序,它会给出不同的数字,但 while 循环总是生成相同的 2 个数字。 谢谢。
int random(int range)
int num;
srand(time(NULL));
num = rand() % range;
return num;
int main()
int cnt = 0;
int i;
int j;
while (cnt <= 20)
i = random(5);
j = random(10);
printf("%d\n",i);
printf("%d\n",j);
printf("\n");
cnt += 1;
return 0;
【问题讨论】:
在 main 中调用 srand 一次(并且仅一次)。搜索一下,这个问题每周都会出现。 如果您在同一毫秒内调用srand(
),您将获得相同的输出,它根本不会是随机的。是的,计算机将在一毫秒内处理两个srand()
,因此答案将是相同的。 srand()
用于使随机化器在外人面前随机运行。你不必像人们说的那样只使用一次srand()
,如果你想让公众更难以预测结果,你可以每分钟都使用它。
谁对这个问题投了赞成票,为什么?
请注意,在大多数实现中,rand() 是一个质量很差的伪随机数生成器。它在相当短的时间内重复。如果随机数的质量很重要,请考虑寻找更好的生成器。如果您使用的是 Linux,/dev/urandom 是一个很好的选择。
另一个质量点是rand()%range
表达式不能可靠地提供均匀分布,尤其是当range
相对于rand()
的最大值较大时。
【参考方案1】:
您只需为随机数生成器播种一次。
所以在你的随机函数之外运行这一行:
srand(time(NULL));
.. 在你的主要功能中:
int random(int range)
int num;
num = rand() % range;
return num;
int main()
int cnt = 0;
int i;
int j;
// Seed random number generator
srand(time(NULL));
while (cnt <= 20)
i = random(5);
j = random(10);
printf("%d\n",i);
printf("%d\n",j);
printf("\n");
cnt += 1;
return 0;
【讨论】:
成功了!感谢您的帮助。【参考方案2】:您只需为随机函数播种一次。包含time.h库并使用
#include<time.h>
.....
srand(time(NULL));
【讨论】:
以上是关于请教C语言中while循环的问题,谢谢!的主要内容,如果未能解决你的问题,请参考以下文章