手把手教你使用rand函数实现猜数字游戏

目录

rand()函数

RAND_MAX

srand()函数

调用rand和srand函数

time()函数

用srand函数实现猜数字游戏


rand()函数

rand 函数返回范围为 0 到 RAND_MAX的伪随机整数。在调用 rand 之前,使用 srand 函数为伪随机数生成器设定种子。 ran函数的头文件是<stdlib.h> 

RAND_MAX

我们将RAND_MAX,复制到VS编译器中,选中右击,选择转到定义,我们可以查看RAND_MAX的范围,在这里我们可以看到RAND_MAX为0x7fff,转换为10进制32767

srand()函数

srand()函数头文件是<stdlib.h> ,调用的类型是整数,srand函数里面是数字多少,rand函数就会从数字多少开始产生随机值,随机值范围是sradn函数里面的数字到32767

调用rand和srand函数

我们第一次调用后结果是365,在重新调用一次,结果还是365

当我们把srand()里面的数字换了之后,再次调用我们发现这个随机值会变

当但随机值等于200,我们第二次调用时,产生的随机值还是691 

 

因此可见如果,srand()里面的值不变每次调用的结果都一样,为了让每次产生的随机值不一样,我们可利用time函数,让srand()里面的值随时间的变化而变化

time()函数

 

 time()函数的头文件时<time.h>,返回类型时time_t,time_t也是一种整形类型

我们将time()函数的返回值,放到srand()函数中,这样srand()函数中的值就随时在变化,由于srand()函数中的值是整型,而time的返回值是整型。因此我们这样将time()函数放到srand()函数中

 接下来,我们测试产生的随机值,我们要求产生1-100的随机值

我们发现这三次测试结果都不相同 

用srand函数实现猜数字游戏

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
	printf("*************************\n");
	printf("******1.play*************\n");
	printf("******0.exit*************\n");
	printf("*************************\n");
}
void game()
{
	int ret = rand() % 100 + 1;
	while (1)
	{
		printf("请输入一个数字:\n");
		int guess;
		scanf("%d", &guess);
		if (guess > ret)
		{
			printf("猜大了\n");
		}
		else if (guess < ret)
		{
			printf("猜小了\n");
		}
		else if(guess==ret)
		{
			printf("猜对了,这个数字是:%d\n", guess);
			break;
		}
	}
}
int main()
{
	srand((unsigned int)time(NULL));
	int input;
	do
	{
		menu();
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			printf("进入猜数字游戏\n");
			game();
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("输入错误,请重新输入:\n");
		}
	} while (input);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_49449676/article/details/124211370