为什么在随机数中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的赋值结果却不一样呢。
希望大神指点下小女子,谢谢。