[問題] 如何同時取到數個不同的隨機數

看板C_and_CPP (C/C++)作者 (兌現承諾)時間16年前 (2010/06/22 15:11), 編輯推噓3(3019)
留言22則, 4人參與, 最新討論串1/1
我的程式需要連續取出幾個不同的隨機數, 但按照以下程式則會取出相同的隨機數, 癥結應該是在srand的地方,有什麼好辦法可以解決呢? #include <cstdlib> #include <cstdio> #include <ctime> #include <iostream> using namespace std; int PickRandomNumber(int a, int b) { srand( (unsigned) time(NULL) ); int num = ( a + (rand() % (b-a+1)) ); return num; } int main () { int num = PickRandomNumber(0,10); int num2 = PickRandomNumber(0,10); cout << num << endl; cout << num2 << endl; return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.120.11.75

06/22 15:19, , 1F
把 srand 移到 main 的第一行
06/22 15:19, 1F

06/22 15:22, , 2F
為什麼這樣做問題就解決了呢?
06/22 15:22, 2F

06/22 15:26, , 3F
或許可以google查詢srand 看看它做了什麼事
06/22 15:26, 3F

06/22 15:26, , 4F
重點是「什麼是亂數種子」
06/22 15:26, 4F

06/22 15:30, , 5F
我的class中的data member需要設為隨機數,
06/22 15:30, 5F

06/22 15:32, , 6F
由剛才測試的結果,我似乎不能把srand擺在constructor或
06/22 15:32, 6F

06/22 15:32, , 7F
data function內.大概只能夠擺在main裡頭.
06/22 15:32, 7F

06/22 15:34, , 8F
但這種做法有點不自然,一開始就得記得設定srand,
06/22 15:34, 8F

06/22 15:34, , 9F
很容易遺漏
06/22 15:34, 9F

06/22 15:38, , 10F

06/22 16:53, , 11F
再多一個類別專門產生亂數+設定種子
06/22 16:53, 11F

06/22 16:54, , 12F

06/22 18:12, , 13F
抱歉借問~ 請問是因為兩次呼叫在一秒內完成的關係嗎?
06/22 18:12, 13F

06/22 19:02, , 14F
是的~
06/22 19:02, 14F

06/22 20:45, , 15F
請問 loveme00835,程式中operator int()有什麼用途?
06/22 20:45, 15F

06/22 20:45, , 16F
謝謝你的回覆^^
06/22 20:45, 16F

06/22 20:55, , 17F
其實不知道用途的話 註解起來看看會不會怎麼樣
06/22 20:55, 17F

06/22 21:14, , 18F
j 大註解這招不錯! XD
06/22 21:14, 18F

06/22 21:23, , 19F
operator int() 跟 << 有關,詳情我暫時沒時間弄清楚
06/22 21:23, 19F

06/22 21:23, , 20F
我必須讓程式能work,其它不懂的細節再補起來
06/22 21:23, 20F

06/22 21:24, , 21F
所以才一直問一些"沒做過功課"的問題 XD
06/22 21:24, 21F

06/23 12:53, , 22F
operator int() 跟 << 有關 <=== 其實不見得啦...XD
06/23 12:53, 22F
文章代碼(AID): #1C868uTI (C_and_CPP)
文章代碼(AID): #1C868uTI (C_and_CPP)