为什么在随机数中srand语句的位置会影响结果?
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int random1to100_0();
int random1to100_1();
void main()
{
int a, b, n, c;
srand((unsigned)time(NULL));
a = random1to100_0();
b = random1to100_0();
n = random1to100_1();
c = rand() % 100 + 1;
printf("%d %d %d %d\n", a, b, n, c);
}
int random1to100_0()
{
int n;
srand((unsigned)time(NULL));
n = rand() % 100 + 1;
return(n);
}
int random1to100_1()
{
int n;
srand((unsigned)time(NULL));
n = rand() % 100 + 1;
return(n);
}
会产生如下的运行结果:
27 27 27 89
就是前三个数值是一样的,但最后一个与前面的不一样。
我的疑问是:
srand不是以程序启动时间为标准生成一个0-0.9999999之间的数值吗?后面rand再以这个值求伪随机数。
可为什么调用同一个子函数输出a,b的值一样。
调用不同的子函数输出n的值和a,b的值一样。
但是主函数中的对c的赋值结果却不一样呢。
希望大神指点下小女子,谢谢。










