在C 中的循環內產生不同的隨機數
在C 中,寫在循環內產生隨機數的程式碼有時會產生意想不到的結果。考慮以下程式碼片段:
for (int t = 0; t < 10; t++) { int random_x; srand(time(NULL)); random_x = rand() % 100; cout << "\nRandom X = " << random_x; }
此程式碼的問題在於循環內重複使用 srand(time(NULL))。雖然 srand() 用於初始化隨機數產生器,但在迭代過程中多次呼叫它會導致產生相同的隨機數序列。
要在每次迭代中產生不同的隨機數,srand( ) 應該只呼叫一次,最好是在程式開始時呼叫。這確保隨機數產生器的種子僅設定一次,從而有效地「隨機化」每次迭代的起點。
int main() { srand(time(NULL)); for (int t = 0; t < 10; t++) { int random_x = rand() % 100; cout << "\nRandom X = " << random_x; } }
此外,如果您需要完全重置隨機數初始化,您可以使用不同的種子值再次呼叫 srand()。這將產生一個新的隨機數序列,與先前的隨機數序列不同。
以上是如何在 C 循環中產生不同的隨機數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!