内容;
一.随机数生成的方法
二.猜数字游戏
一.随机数生成
完成随机数生成要三个函数: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<stdio.h>
#include<stdlib.h>
#include<time.h>
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<stdio.h>
#include<stdlib.h>
#include<time.h>
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--;
}
}
———————————————————————————————————————————
好啦,这就是本篇文章的所有内容啦,谢谢!