【領卓教育】隨機點名程序

隨機點名

簡單的隨機點名系統,利用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的隨機數種子,從而產生隨機數;
最後輸出數組的某個成員;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章