> 文档中心 > 手把手教你使用rand函数实现猜数字游戏

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

目录

rand()函数

RAND_MAX

srand()函数

调用rand和srand函数

time()函数

用srand函数实现猜数字游戏


rand()函数

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

RAND_MAX

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

srand()函数

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

调用rand和srand函数

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

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

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

 

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

time()函数

 

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

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

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

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

用srand函数实现猜数字游戏

#include#include#includevoid 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;}

神唱ktv下载