推 EdisonX: func 裡把 srand 拿掉就可以了123.195.169.158 07/24 22:44
→ moebear: 謝謝! 解決問題了 36.226.142.160 07/24 22:48
我想了解一下為什麼會發生這個問題,方便回答嗎?
※ 編輯: moebear (36.226.142.160), 07/24/2015 22:54:49
→ stimim: 你可以先上網看 srand 和 time 函數的說明 220.134.4.17 07/24 23:25
→ EdisonX: time(NULL) 是取得目前的時間截記,每秒更123.195.169.158 07/24 23:59
→ EdisonX: 新一次,換句話說,同一個公式,你的 func123.195.169.158 07/24 23:59
→ EdisonX: 一直用相同的亂數初值(同一秒)代入...123.195.169.158 07/24 23:59
如果我的理解沒錯的話,是srand重置了時間標記,產生了一組亂數序列,
rand是從這亂數序列裡面取,每次用rand都會往後面取,所以一般來說不會重複。
但是我程式碼在for裡面使用srand,在同一秒用相同的時間做出相同的時間標記,
產生同一組亂數序列,而rand本身的記數也被重置,所以才會一直出同樣的結果,
而逐行執行的時間超過一秒,才會出不同的結果,是這樣嗎?
※ 編輯: moebear (36.224.250.232), 07/25/2015 12:22:14
推 PRAM: 你自己再做個實驗測試不就知道了 114.36.64.44 07/25 19:22