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;
}

猜你喜欢

转载自blog.csdn.net/leikun153/article/details/81105001