-1
當生成隨機數時,人們首先調用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書。一旦閱讀,itr將非常清楚爲什麼你的問題提案是 - 好 - 一個壞主意。 – Olaf