#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int flip()
{
srand((unsigned)time(NULL));
return rand() % 2;
}
int main()
{
int t;
int front = 0;
int contrary = 0;
for (t = 0; t < 100; t++)
{
if (flip())
{
front++;
}
else
{
contrary++;
}
}
printf("正面%d次\n背面%d次\n", front, contrary);
return 0;
}
如果这样放,那么每次出来都会是正面100次或背面100次
而如果将srand函数放再主函数里面,如
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int flip()
{
return rand() % 2;
}
int main()
{
srand((unsigned)time(NULL));
int t;
int front = 0;
int contrary = 0;
for (t = 0; t < 100; t++)
{
if (flip())
{
front++;
}
else
{
contrary++;
}
}
printf("正面%d次\n背面%d次\n", front, contrary);
return 0;
}
得出来的结果便是我们想要的。
为什么呢?
注意,我们引用srand函数,但是它是与时间相关的,这也是我们添加time库的原因,而srand读取seed是需要1s左右的时间的,如果直接放在flip函数中,两行代码之间的间隔太密,就会导致srand来不及读取,从而导致每次输出要么正面100,要么背面100。
在使用srand时,记住在主函数中使用。