srand() 函數內的函數行為
在C 使用rand() 函數時,一個可能會遇到這樣的問題:在同一函數中多次呼叫函數總是會產生相同的值。要解決此問題,必須了解 srand() 函數的行為。
什麼是 srand() 以及它為何重要?
srand() 函式初始化隨機數產生器。當重複呼叫 rand() 函數而不使用 srand() 重新初始化它時,它會繼續從同一種子產生後續數字,從而產生可預測的結果。
修復隨機性的解決方案
為了確保真正的隨機性, srand() 函數只能在程式開始時呼叫一次,而不是在特定函數內呼叫。透過這樣做,種子僅設定一次,從而允許 rand() 函數透過後續呼叫產生真正的隨機序列。
應用解決方案
在提供的程式碼片段中,問題出在 PullOne() 函數中。 srand() 函數在每次調用 rand() 之前被調用,從而導致可預測的序列和重複的結果。若要修正此問題,請將srand() 的呼叫移至主函數的開頭:
int main() { std::srand(time(0)); string pull_1, pull_2, pull_3; pull_1 = PullOne(); pull_2 = PullOne(); pull_3 = PullOne(); return 0; }
透過應用此修改,rand() 函數將為pull_1、pull_2 和pull_2 產生不同的值
pull_3.以上是為什麼我的 C rand() 函數總是傳回相同的值,如何使用 srand() 修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!