[問題] 亂數程式連續執行

看板C_and_CPP作者 (無)時間14年前 (2010/02/07 02:57), 編輯推噓3(304)
留言7則, 3人參與, 最新討論串1/6 (看更多)
遇到的問題: (題意請描述清楚) 我的亂數程式在連續執行時, 由於時間間隔很短, srand() 傳入的參數一樣,而造成兩次得到的亂數值相同, 有人知道該如何將他打亂嗎? update: 想到一個解法...加上 process pid 程式跑出來的錯誤結果: >./a.out && ./a.out i=1 i=2 i=6 i=3 i=2 --- i=1 i=2 i=6 i=3 i=2 --- 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Freebsd 有問題的code: (請善用置底文標色功能) #include <stdio.h> #include <stdlib.h> #include <time.h> void f() { int iSecret; iSecret = rand() % 10 + 1; printf("i=%d\n",iSecret); } int main () { int iSecret;[A srand (time(NULL) ); int k=0; for(k=0;k<5;k++){ f(); } printf("---\n"); return 0; } 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.235.102

02/07 03:02, , 1F
用processid 就不用include time.h 如果時間太近
02/07 03:02, 1F

02/07 03:02, , 2F
也可以讓他SLEEP
02/07 03:02, 2F

02/07 03:13, , 3F
歐 對了 話說..有必要另外弄呢副函式嗎@@? 無聊問問
02/07 03:13, 3F

02/07 03:17, , 4F
time.h 應該拿掉~有 pid,sleep 就不考慮了, f() 是測別的
02/07 03:17, 4F

02/07 03:17, , 5F
東西而沒有改掉...
02/07 03:17, 5F

02/07 06:48, , 6F
也可以考慮多帶一個亂數種子的參數
02/07 06:48, 6F

02/07 06:49, , 7F
例如 srand (atoi(argv[1]) * time(NULL));
02/07 06:49, 7F
文章代碼(AID): #1BRRkqdb (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1BRRkqdb (C_and_CPP)