C語言實現隨機分組

掌握隨機分組的精要,個人最覺得是要知道並瞭解到   srand()   函數  與   rand()   函數,並瞭解到如何將已經存在的順序給打亂掉,即實現它的亂序。

其中,rand函數在產生隨機數前,需要系統提供的生成僞隨機數序列的種子,rand根據這個種子的值產生一系列隨機數。如果系統提供的種子沒有變化,每次調用rand函數生成的僞隨機數序列都是一樣的。srand(unsigned seed)通過參數seed改變系統提供的種子值,從而可以使得每次調用rand函數生成的僞隨機數序列不同,從而實現真正意義上的"隨機"。通常可以利用系統時間來改變系統的種子值,即srand(time(NULL)),可以爲rand函數提供不同的種子值,進而產生不同的隨機數序列。

題目要求:

要求將下列名單隨機分組:分組要求,隨機選擇4個人組成一組
輸出結果:4個人一行進行輸出,每行代表一個組
例如:
許新華  王玉恆  陶小康  王嬌嬌
盛  開  鄭  丹  陳  芳  張  龍
陳夢玉  祝秋培  吳贇鵬  胡光興
曾從威  邊金鵬  陳逸倫  王  琦
劉加封  徐煜清  姚  笛  孔海宇
孫凌霄  王  鵬  王  虎  李  峯
周  波  蔣愷均  徐小蕤  繆  峯
劉江濤  陳  喆  方文倩  崔雅倩
陳  程  陳振宇  李  森  陳志輝
李鴻飛

人名:
曾從威 蔣愷均 劉江濤 崔雅倩 祝秋培 吳贇鵬 李鴻飛 王虎 繆峯 張龍 劉加封
姚笛 鄭丹 孔海宇 陳逸倫 徐煜清 陳喆 盛開  方文倩 邊金鵬 陳振宇 陶小康 
孫凌霄 王玉恆 王嬌嬌 許新華 胡光興 周波  王鵬  李鴻飛 陳程 徐小蕤 李峯
王琦 陳夢玉  陳志輝  李森  陳芳

具體代碼實現如下:

#include <stdio.h>
#include <stdlib.h>

int main()
{
	int i,j;
	char *name[]={ 
	               "許新華", "王玉恆", "陶小康", "王嬌嬌",
                   "盛  開",  "鄭  丹",  "陳  芳",  "張  龍",
                   "陳夢玉",  "祝秋培",  "吳贇鵬",  "胡光興",
                   "曾從威",  "邊金鵬",  "陳逸倫",  "王  琦",
                   "劉加封",  "徐煜清",  "姚  笛",  "孔海宇",
                   "孫凌霄",  "王  鵬",  "王  虎",  "李  峯",
                   "周  波",  "蔣愷均",  "徐小蕤",  "繆  峯",
                   "劉江濤",  "陳  喆",  "方文倩",  "崔雅倩",
                   "陳  程",  "陳振宇",  "李  森",  "陳志輝",
                   "李鴻飛"                       
	             };
	int len = sizeof(name)/sizeof(name[0]);	//判斷總人數
	
	//亂序
	srand( (unsigned)time(NULL) );  //以系統時間來設置隨機數種子的函數,與rand函數一起使用
	int last = len-1;
	for(j=0; j<len-1; j++)
	{
		int index = rand()%len;
		char *tmp=name[last];
		name[last]=name[index];
	    name[index]=tmp;
		last--;	
	}
					 
	for( i=0; i<len; i++)
	{
		printf("%-14s",name[i]);
		if( (i+1)%4==0 )
			printf("\n");
	}
	printf("\n");
	
	return 0;
}

 

 

 

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