随机数生成+猜数字游戏

内容;

      一.随机数生成的方法

      二.猜数字游戏

一.随机数生成

  完成随机数生成要三个函数:rand(),srand(),time()。

1.rand函数

rand函数可以生成随机数,但其是伪随机,每次输出的数都是一样的。

rand是基于一个seed来生成随机数的,默认值是1。

因此我们需要与srand这函数配合。

2.srand函数

srand的原型:

这个函数是用来初始化随机数的生成器的。

如果srand的种子是随机的,那么rand就可以生成随机数。

怎样随机生成seed呢?需要用到time函数。

3.time函数

time的原型:

函数返回1970年1月1日0点0时0秒到当前时间的差值,单位秒。如果timer(就是图中的那个)NULL,那么time就返回时间差值。

这是初步实现的代码,已经可以随机生成数了。

#include
#include
#include
int main()
{
	srand((unsigned int)time(NULL));//time返回的是整型变量但是srand要无符号的seed,
	                                //所以要转化变量。
	int n = rand();
	printf("%d", n);
	return 0;
}

但是上述代码生成的随机数可能不是我们需要的范围,我们需要对上述代码进行改进。

4.限定生成数的范围

这是我们需要用到一个公式:

a  +  rand() % (b-a+1)        范围[a,b]

#include
#include
#include
int main()
{
	srand((unsigned int)time(NULL));//time返回的是整型变量但是srand要无符号的seed,
	                                //所以要转化变量。
	int a, b;
	scanf("%d%d", &a, &b);  //a是左范围,b是右范围,都是闭的
	int n = a+rand()%(b-a+1);
	printf("%d", n);
	return 0;
}

这样随机数生成就完成啦。

二.猜数字游戏

猜数字游戏核心就是随机数生成。

思路:随机生成数->进入循环->输入一个数->判断该数是否与生成数相符->给出提示,判断是否要继续循环。

代码如下:

void game()
{
	int res = rand() % 100 + 1;
	while (1)
	{
		int n;
		printf("请输入你猜的数字->\n");
		scanf("%d", &n);
		if (n < res)
		{
			printf("猜小了\n");
		}
		else if (n > res)
		{
			printf("猜大了\n");
		}
		else
		{
			printf("恭喜你,猜对了!\n");
			break;
		}
	}
}

当然,我们还可以限制猜的次数

void game()
{
	int res = rand() % 100 + 1;
	int num = 5;
	while (num)
	{
		int n;
		printf("你还有%d次机会\n",num);
		printf("请输入你猜的数字->\n");
		scanf("%d", &n);
		if (n < res)
		{
			printf("猜小了\n");
		}
		else if (n > res)
		{
			printf("猜大了\n");
		}
		else
		{
			printf("恭喜你,猜对了!\n");
			break;
		}
		if (num == 0)
		{
			printf("你的机会用完了\n");
			break;
		}
		num--;
	}
}

———————————————————————————————————————————

好啦,这就是本篇文章的所有内容啦,谢谢!

你可能感兴趣的:(C语言,c语言)