#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);
}
上記のコードは、3つの異なる整数を生成します。しかし、srandom((unsigned)time(NULL))がsep_gen()関数で使用されている場合、生成される整数はすべて3回同じです。 (以下コード)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:これは[manページ](http://linux.die.net/man/3/srandom)によるPOSIX.1-2001の一部です。なぜそれが重要かわからない。 – ShadowRanger
@ShadowRanger:[ask]と[mcve]とは何かを参照してください。例えば、適切なタグが存在する。 POSIX、それ以外の場合は、テキストに記述する必要があります。 – Olaf