秒級隨機值-常用方法: 上面的srand((unsigned)time(NULL));表示給rand()產生隨機值的種子. 其中(unsigned)time(NULL)則將當前時間轉為一個正整數,也就是說,如果我們如果在小於1秒之內多次運行該代碼,則隨機值都是相同的. 編譯運行-如下圖所示,可以看到 ...
秒級隨機值-常用方法:
#include <stdlib.h>
#include <stdio.h>
#include <stdio.h>
#include <time.h>
int main(void)
{
int buf[10],i,j;
srand((unsigned)time(NULL));
for(i=0; i<10; i++)
{
buf[i]=rand()%100;
printf("%d ",buf[i]);
}
printf("\n");
return 0;
}
上面的srand((unsigned)time(NULL));表示給rand()產生隨機值的種子.
其中(unsigned)time(NULL)則將當前時間轉為一個正整數,也就是說,如果我們如果在小於1秒之內多次運行該代碼,則隨機值都是相同的.
編譯運行-如下圖所示,可以看到如果運行時間小於1秒時,則隨機值都是相同的:
毫秒級實現
- 可以通過ftime()函數來獲取timeb結構體,既可實現毫秒級隨機數變化了
其中ftime()函數如下:
int ftime(struct timeb *tp);
其中timeb結構體定義如下:
struct?? timeb{ time_t time; /* 為1970-01-01至今的秒數*/ unsigned short millitm; /* 毫秒值 */ short timezonel; /* 為目前時區和Greenwich相差的時間,單位為分鐘 */ short dstflag; /* 為日光節約時間的修正狀態,如果為非0代表啟用日光節約時間修正 */ };
代碼如下所示:
#include <stdlib.h>
#include <stdio.h>
#include <stdio.h>
#include <time.h>
#include <sys/timeb.h>
int main(void)
{
int buf[10],i,j;
struct timeb timer;
ftime(&timer);
srand(timer.time * 1000 + timer.millitm);
for(i=0; i<10; i++)
{
buf[i]=rand()%100;
printf("%d ",buf[i]);
}
printf("\n");
return 0;
}