作者justinC (無)
看板C_and_CPP
標題[問題] 亂數程式連續執行
時間Sun Feb 7 02:57:53 2010
遇到的問題: (題意請描述清楚)
我的亂數程式在連續執行時, 由於時間間隔很短,
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