隨機點名
簡單的隨機點名系統,利用c語言編寫
代碼如下
#include <stdio.h>
#include <sys/time.h>
char * name[]={"張 震","賈英楠","宋文碩","郭書城","李世超",
"童迪鑫","曹成亮","張 輝","賈志忠","陳東飛",
"李 帥","張子乾","劉宏達","李代兵","段 龍",
"謝世博","張 鑫","樑 爽","彭 雷","於金水",
"趙延廣","李明陽","趙 鵬","李俊才","齊文鵬",
"孫曉東","王錦程","陰祖仟","任文新","所丁月",
"許 爽","遲 磊","卓 健","王雲飛","蘇宇峯",
"左含旭","孫亞軒","田繼輝","李新宇","王 帥",
"羅 新","江偉東","劉明奇","周義航","趙 洋"};
int main()
{
int i ,num;
struct timeval tv ;
struct timezone tz ;
gettimeofday(&tv,&tz);
printf("usec=%ld\n",tv.tv_usec%100);
srand(tv.tv_usec%100);
for(i=0;i<1000;i++)
{
num = rand()%(sizeof(week)/sizeof(char*)) ;
printf("%-10s\r",week[num]);
usleep(1000);
}
printf("\n");
return 0;
}
代碼解釋
首先定義數組,數組內的成員是即將隨機的名字,本程序以作者班級同學爲例;#include <sys/time.h>是Linux下時間和日期的頭文件;gettimeofday是獲得當前精確時間的函數,具體的結構體如下:
struct timeval{
long int tv_sec; // 秒數
long int tv_usec; // 微秒數
}
rand()函數用來產生隨機數,但是,rand()的內部實現是用線性同餘法實現的,是僞隨機數,由於週期較長,因此在一定範圍內可以看成是隨機的。在調用rand()函數之前,可以使用srand()函數設置隨機數種子,如果沒有設置隨機數種子,rand()函數在調用時,自動設計隨機數種子爲1。隨機種子相同,每次產生的隨機數也會相同。
將此時的精確時間作爲rand的隨機數種子,從而產生隨機數;
最後輸出數組的某個成員;