[問題] 關於迴圈中使用rand()的問題

看板C_and_CPP作者 (令狐瑜)時間11年前發表 (2014/06/11 12:12), 11年前編輯推噓7(7012)
留言19則, 9人參與, 最新討論串1/1
開發平台(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

06/11 20:15, , 1F
幫推令狐魚 不然他其末要被當了
06/11 20:15, 1F

06/11 20:23, , 2F
想知道+1
06/11 20:23, 2F

06/11 20:47, , 3F
C++我不知道,不過在C上面,你得用srand()設定seed
06/11 20:47, 3F

06/11 20:47, , 4F
如果沒有先設定seed的話,rand()的結果就不是真的亂數
06/11 20:47, 4F

06/11 20:49, , 5F
#include <random>
06/11 20:49, 5F

06/11 20:57, , 6F
有 我有在main裡面先把time當成seed
06/11 20:57, 6F

06/11 20:58, , 7F
然後random我的compiler不support
06/11 20:58, 7F

06/11 20:58, , 8F
這題最後也不是要用我電腦測 所以不太敢用那個library
06/11 20:58, 8F

06/11 21:16, , 9F
12.11可以,不是在自己電腦上測的話就沒辦法
06/11 21:16, 9F

06/11 21:44, , 10F
我自己在用 rand 沒有遇到結果都一樣的情況
06/11 21:44, 10F


06/11 21:44, , 12F
上面提供的那個是 c++11 的功能
06/11 21:44, 12F

06/11 21:45, , 13F
你 compiler 不能太舊,compiler 也要加上參數
06/11 21:45, 13F

06/11 21:45, , 14F
-std=c++11
06/11 21:45, 14F
※ 編輯: fishlinghu (220.129.29.231), 06/11/2014 21:47:44

06/11 22:02, , 15F
你也無法自d
06/11 22:02, 15F

06/12 03:09, , 16F
好shuffle 不用嗎
06/12 03:09, 16F

06/12 06:47, , 17F
我記得c++使用rand會有這種狀況,大學時代寫作業有遇
06/12 06:47, 17F

06/12 06:47, , 18F
到過,不過忘記後來怎麼改的就好了
06/12 06:47, 18F

06/12 18:46, , 19F
一樣才好啊 不一樣就慘了
06/12 18:46, 19F
文章代碼(AID): #1Jc4V224 (C_and_CPP)