看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux 問題(Question): 問題原文是: Write a function to randomly select n items from a set with m items(an array of unique integers). Each element must have equal probability of being chosen. Please use rand() function which generate a random number 0 and maximum integer, and suppose srand() has been invoked in advance. function: void RandomSelect(int In[], int m, int Out[], int N) 其實不太了解黃色字部份意思 因此為了簡化問題,我先固定陣列In[]和Out[]的大小,並把In[]內容先預設好 把重點放在綠色字的部份 code: http://codepad.org/yYj8sL3q 但是選出來的資料其實是有可能重複的 (我想過用標記法讓被選過的資料不會再被選到,但這應該不是正解吧!?) 不知道是不是有更好的方法可以保證問題原文所說的呢? 謝謝大家! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.176.221.68
Feis:不要重複選或者用 shuffle 的方式? 11/17 15:14
Hyozero:請問shuffle是指? 11/17 15:28
chrisdar:洗牌 準備一固定大小陣列將內容隨意弄亂 然後依序取出 11/17 17:45
Hyozero:謝謝~那shuffle用更多的空間囉..請問有更精妙的方法嗎? 11/17 19:58
Hyozero:http://codepad.org/MZFe3dG6 這是shuffle的版本 11/17 21:00
Hyozero:不知道這樣寫有沒有好點 @@ 11/17 21:00
azureblaze:std::uniform_int_distribution 應該會被老師揍XD 11/17 21:03
azureblaze:http://ppt.cc/kLZE 可以聽聽這個 11/17 21:05
cutekid:http://codepad.org/qvW8YqTA 11/17 21:22
cutekid:↑上面有寫錯,更正 → http://codepad.org/HGZcDdyk 11/17 21:47
Hyozero:感謝大家協助!! 11/17 22:08