srand(time(NULL));为什么把随机种子放在循环体内多次产生随机数一样而放在循环体外却没有问题呢?
#include<stdio.h>#include<stdlib.h>#include<time.h>//含time函数的原型intmain(){srand(time(N...
#include<stdio.h>
#include<stdlib.h>
#include<time.h>//含time函数的原型
int main()
{
srand(time(NULL));//调用当前系统时钟产生随机种子
int a,b,i,m1=0,m2=0,m3=0,n;
char n1,n2;
printf("Please input two player's n and how many matchs ongoing?");
scanf("%c%c%d",&n1,&n2,&n);
for(i=1;i<=n;i++)
{
a=1+rand()%6;
b=1+rand()%6;
//若把srand(time(NULL))放在此处就不能产生随机数了
printf("%c's points is %d %c's points is %d\n",n1,a,n2,b);
if(a>b)
{
printf("%c is winner in this round\n\n\n",n1);
m1++;
}
else if(a==b)
{
printf("Draw!\n\n\n");
m3++;
}
else
{
printf("%c is winner in this round\n\n\n",n2);
m2++;
}
}
printf("%c won %d times,%c won %d times,draw %d times.\n",n1,m1,n2,m2,m3);
return 0;
} 展开
#include<stdlib.h>
#include<time.h>//含time函数的原型
int main()
{
srand(time(NULL));//调用当前系统时钟产生随机种子
int a,b,i,m1=0,m2=0,m3=0,n;
char n1,n2;
printf("Please input two player's n and how many matchs ongoing?");
scanf("%c%c%d",&n1,&n2,&n);
for(i=1;i<=n;i++)
{
a=1+rand()%6;
b=1+rand()%6;
//若把srand(time(NULL))放在此处就不能产生随机数了
printf("%c's points is %d %c's points is %d\n",n1,a,n2,b);
if(a>b)
{
printf("%c is winner in this round\n\n\n",n1);
m1++;
}
else if(a==b)
{
printf("Draw!\n\n\n");
m3++;
}
else
{
printf("%c is winner in this round\n\n\n",n2);
m2++;
}
}
printf("%c won %d times,%c won %d times,draw %d times.\n",n1,m1,n2,m2,m3);
return 0;
} 展开
3个回答
展开全部
srand中是以时间为参数,放在循环体内,运行速度快,时间还未改变又被当作了参数,建议添加sleep一下,再试试看看。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把随机数种子代码srand((unsigned int)time(NULL));放在循环外面。
把rand()%放进循环里面就ok!
只要是随机数种子这样做是不会出错的 !!!
把rand()%放进循环里面就ok!
只要是随机数种子这样做是不会出错的 !!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询