#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void sep_gen(void);
int main()
{
srandom((unsigned)time(NULL));
printf("Random Numbers\n");
sep_gen();
sep_gen();
sep_gen();
return(0);
}
void sep_gen(void)
{
long int r;
int i;
for (i=0;i<10;i++)
putchar('-');
putchar('\n');
r=random();
printf("%ld\n",r);
}
上面的代码根据预期生成三个不同的整数。但是,当srandom((unsigned)time(NULL))被使用sep_gen()函数时,生成的整数三次都是相同的。 (下面的代码)为什么srandom(time(NULL))在main()函数和用户定义的函数中表现不同?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void sep_gen(void);
int main()
{
printf("Random Numbers\n");
sep_gen();
sep_gen();
sep_gen();
return(0);
}
void sep_gen(void)
{
srandom((unsigned)time(NULL));
long int r;
int i;
for (i=0;i<10;i++)
putchar('-');
putchar('\n');
r=random();
printf("%ld\n",r);
}
我的问题是为什么当()运作的srandom被放置在主函数随机()函数生成不同的号码,但不这样做,当在sep_gen()函数?
'srandom'不是标准功能。 – Olaf
@Olaf:根据[手册页](http://linux.die.net/man/3/srandom),它是POSIX.1-2001的一部分。不知道为什么它很重要。 – ShadowRanger
@ShadowRanger:看[问]和[mcve]是什么。有适当的标签用于例如POSIX,否则它应该在文本中。 – Olaf