看板 C_and_CPP 關於我們 聯絡資訊
遇到的問題: (題意請描述清楚) 我的亂數程式在連續執行時, 由於時間間隔很短, 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
janice001:用processid 就不用include time.h 如果時間太近 02/07 03:02
janice001:也可以讓他SLEEP 02/07 03:02
janice001:歐 對了 話說..有必要另外弄呢副函式嗎@@? 無聊問問 02/07 03:13
justinC:time.h 應該拿掉~有 pid,sleep 就不考慮了, f() 是測別的 02/07 03:17
justinC:東西而沒有改掉... 02/07 03:17
tzhlin:也可以考慮多帶一個亂數種子的參數 02/07 06:48
tzhlin:例如 srand (atoi(argv[1]) * time(NULL)); 02/07 06:49