看板 Programming 關於我們 聯絡資訊
各位好,我這幾天在寫一個簡單的計算程式, 遭遇到一個問題,我使用函數, 在我進行逐行檢查的時候,傳入值有成功,回傳值也是成功的, (函數回傳值應該會改變,逐行檢查時也有改變) 但是如果我直接執行exe的話,每次的回傳值都會變成同一個, 第二次或第三次執行的時候回傳值才會改變。 如圖所示 這是自動執行 http://i.imgur.com/vaEhTWc.png 這是逐行檢查 http://i.imgur.com/KbGMDJ5.png 請問到底是哪邊發生問題了? 這個情況我也不知道該拿甚麼關鍵詞去搜尋。拜託各位幫忙解答了。 下面是程式碼 http://codepad.org/ezukUOHW -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.226.142.160 ※ 文章網址: https://www.ptt.cc/bbs/Programming/M.1437748568.A.104.html ※ 編輯: moebear (36.226.142.160), 07/24/2015 22:41:34
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: 亂數 http://goo.gl/eF7X7G 看完第二點123.195.169.158 07/24 23:58
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