算法竞赛入门经典:第六章 数据结构基础 6.4测试

/*
测试:
找一份完成相同功能的代码。对比测试,需要大量数据。
stdlib.h中的rand(),生成[0,RAND_MAX]的均匀随机数,RAND_MAX>=32767
*/

/*
关键:
1 int rand():产生0~RAND_MAX之间的伪随机数,rand()前面必须先调用srand(time(NULL)),time返回自1970年1月1日0点经过的秒数
2 void srand(unsigned seed):设置rand()的伪随机序列种子,种子是伪随机数计算依据,种子相同,伪随机数序列相同,不要在同一程序中多次调用srand
3 产生[1,n]之间均匀整数方法是,先得到[0,1]小数,乘以n-1倍后四舍五入,再加上1
4 生成随机数据,分别执行两个程序,若出错,减小数据生成器中的n和m,找一组简单的错误数据
*/
#include <stdio.h>
#include <stdlib.h>//rand()和srand()需要
#include <time.h>//time()需要



double random()
{
	return (double)rand()/RAND_MAX;//产生[0,1]的小数
}

int random(int m)
{
	return (int)(random()*(m-1) + 0.5);//产生[0,m-1]的随机数
}

void test()
{
	srand(time(NULL));//初始化随机数种子
	int n,m;
	scanf("%d %d",&n,&m);
	printf("%d %d\n",n,m);
	for(int i = 0; i < m;i++)
	{
		if(rand()%2 == 0)
		{
			printf("A");
		}
		else
		{
			printf("B");
		}
		int p,q;
		for(; ;)
		{
			p = random(n) + 1;
			q = random(n) + 1;
			if(p != q)//q与q不相等才合法
			{
				break;
			}
		}
		printf(" %d %d\n",p,q);
	}
}

int main(int argc,char* argv[])
{
	test();
	system("pause");
	return 0;
}

你可能感兴趣的:(算法竞赛)