看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Windows Code Blocks 12.11 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) no 問題(Question): 我用while迴圈執行同一個function很多次 function裡面有用到rand() 我希望可以藉由很多次執行來找到一個不錯的解 可是發現每次執行的時候rand()的結果好像都一樣 我的程式結構大致如下 main { srand(time(NULL)); i = 0; while(i<100) { function(); ++i; } } function() { vector<int> ordered_elements; vector<int> new; //利用rand()選擇一個經過排序的vector中的物件 //存入另一個新的vector } 這是我主要有用到rand()的部分 我之後會拿那個隨機排序的新vector去做其他的事情 後來發現每次結果都一樣 我用rand()的方式就是利用rand()%ordered_elements.size() 來選擇已經過排序的vector中的物件 我有聽說這個限制範圍的方法好像不太好 不過還是很納悶怎麼會完全一樣 希望有人可以解答 或是提供一些參考資料 感謝 ================================================================ 抱歉傻了 剛剛看到有地方沒有initialize 我的用法是對的 需要自D嗎 sorry -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.136.220 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1402488770.A.084.html
yyep:幫推令狐魚 不然他其末要被當了 06/11 20:15
myislin:想知道+1 06/11 20:23
RouterHsieh:C++我不知道,不過在C上面,你得用srand()設定seed 06/11 20:47
RouterHsieh:如果沒有先設定seed的話,rand()的結果就不是真的亂數 06/11 20:47
handsome616:#include <random> 06/11 20:49
fishlinghu:有 我有在main裡面先把time當成seed 06/11 20:57
fishlinghu:然後random我的compiler不support 06/11 20:58
fishlinghu:這題最後也不是要用我電腦測 所以不太敢用那個library 06/11 20:58
handsome616:12.11可以,不是在自己電腦上測的話就沒辦法 06/11 21:16
diabloevagto:我自己在用 rand 沒有遇到結果都一樣的情況 06/11 21:44
diabloevagto:http://www.cplusplus.com/reference/random/ 06/11 21:44
diabloevagto:上面提供的那個是 c++11 的功能 06/11 21:44
diabloevagto:你 compiler 不能太舊,compiler 也要加上參數 06/11 21:45
diabloevagto:-std=c++11 06/11 21:45
※ 編輯: fishlinghu (220.129.29.231), 06/11/2014 21:47:44
diabloevagto:你也無法自d 06/11 22:02
firejox:好shuffle 不用嗎 06/12 03:09
flydragon198:我記得c++使用rand會有這種狀況,大學時代寫作業有遇 06/12 06:47
flydragon198:到過,不過忘記後來怎麼改的就好了 06/12 06:47
damody:一樣才好啊 不一樣就慘了 06/12 18:46