真正實時隨機數的實現C++ _timeb _ftime(轉)
Posted on 2011-03-31 17:15 S.l.e!ep.¢% 閱讀(690) 評論(0) 編輯 收藏 引用 所屬分類: Unix通常大家使用隨機函數的時候都是使用
srand((unsigned
short
int
)time(NULL));
??? rand();
??? rand();
?? 在大部分的應用中都能很好用。但是當遇到時間性很強的時候。比如操作速度很快的游戲。這個隨機方法就不好用了。
因為它有時間間隔。如果時間在1秒或更短的時間調用這個,它返回的隨機數是一樣的。
?? 給大家一個實時性很強的隨機方法
struct
_timeb
{
???? time_t time;
???? unsigned short millitm;
???? short timezone, dstflag;
};
{
???? time_t time;
???? unsigned short millitm;
???? short timezone, dstflag;
};
time是從UTC時間1970年1月1日午夜(00:00:00)起累計的秒數;
millitm是一秒內的毫秒數
dstflag不為0,說明這是夏令時時間
timezone是UTC時間和本地時間的相差分鐘數
利用其中的毫秒?;旧喜粫兄貜偷臄底殖霈F。
example:
struct
_timeb timebuffer;
//
定義一個結構
_ftime( & timebuffer); // 初始化timebuffer
srand(timebuffer.millitm); // timebuffer.millitm獲得毫秒
int a = rand();
_ftime( & timebuffer); // 初始化timebuffer
srand(timebuffer.millitm); // timebuffer.millitm獲得毫秒
int a = rand();
記得包含頭文件
#include
<
sys
/
timeb.h
>
??
//
_ftime 無返回值,但獲得本地的時間數據并且填充進傳遞進來指向時間結構的變量中
#include < time.h >
#include < time.h >