乱数を生成する場合、最初にsrand(int seed)
を呼び出して種を生成し、次にrand(void)
を呼び出します。擬似ランダム関数がシードを引数として直接取るのはなぜですか?
私の質問は、なぜただ一つの機能をrand(int seed)
として直接使用しないのですか?
C標準には、ライブラリ関数がsrand関数を呼び出していないかのように実装が振舞うもの
を言って、私は理解していない引用符を持っています。
私はこの文と関係があるかどうかはわかりません。
標準はまた、私は静的変数を使用する理由を理解しない、実装例を示します:
static unsigned long int next = 1;
int rand(void) // RAND_MAX assumed to be 32767
{
next = next * 1103515245 + 12345;
return (unsigned int)(next/65536) % 32768;
}
void srand(unsigned int seed)
{
next = seed;
}
'srand()'(と 'rand()'自体を呼び出さないライブラリに関する部分はおそらく、 'rand()'によって生成されたシーケンスの再現性を保証することを意図しています。 – EOF
マニュアルページは、記述されている機能を使用する前に読み込まれている必要があります。代わりに、それらがどのように使用されるのかを記述したCの本を読むことができます。一度読んだら、なぜあなたの質問の提案が - よく - 悪い考えであるのかはっきりしています。 – Olaf