【C语言篇】猜数字游戏(赋源码)

猜数字游戏前言在前两篇博客对于分支和循环语句进行了详细的介绍:分支语句详解循环语句详解我们就可以写一写稍微有趣的代码了,比如:写一个猜数字游戏游戏要求:电脑⾃动⽣成1~100的随机数玩家猜数字,猜数字的过程中,根据猜测数据的⼤⼩给出⼤了或⼩

【C语言篇】猜数字游戏(赋源码)

猜数字游戏

前言

在前两篇博客对于分支和循环语句进行了详细的介绍:

分支语句详解

循环语句详解

我们就可以写一写稍微有趣的代码了,比如:

写一个猜数字游戏

游戏要求:

  1. 电脑⾃动⽣成1~100的随机数
  2. 玩家猜数字,猜数字的过程中,根据猜测数据的⼤⼩给出⼤了或⼩了的反馈,直到猜对,游戏结束

随机数生成

要想完成猜数字游戏,⾸先得产⽣随机数,那怎么产⽣随机数呢?

rand

C语⾔提供了⼀个函数叫rand,这函数是可以⽣成随机数的,函数原型如下所⽰:

代码语言:javascript代码运行次数:0运行复制
int rand (void);

rand函数会返回⼀个伪随机数,这个随机数的范围是在0~RAND_MAX之间,这个RAND_MAX的⼤⼩是依赖编译器上实现的,但是⼤部分编译器上是32767。

rand函数的使⽤需要包含⼀个头⽂件是:stdlib.h

那我们就测试⼀下rand函数,这⾥多调⽤⼏次,产⽣5个随机数:

代码语言:javascript代码运行次数:0运行复制
#include <stdio.h>
#include <stdlib.h>
int main()
{
    printf("%d\n", rand());
    printf("%d\n", rand());
    printf("%d\n", rand());
    printf("%d\n", rand());
    printf("%d\n", rand());
    return 0;
}

我们先运⾏⼀次,看看结果,再运⾏⼀次再看看结果,多运⾏⼏次呢?

我们可以看到虽然⼀次运⾏中产⽣的5个数字是相对随机的,但是下⼀次运⾏程序⽣成的结果和上⼀次 ⼀模⼀样,这就说明有点问题。

其实rand函数⽣成的随机数是伪随机的,伪随机数不是真正的随机数,是通过某种算法⽣成的随机数。

真正的随机数的是⽆法预测下⼀个值是多少的。⽽rand函数是对⼀个叫“种⼦”的基准值进⾏运算⽣成的随机数。

之所以前⾯每次运⾏程序产⽣的随机数序列是⼀样的,那是因为rand函数⽣成随机数的默认种⼦是1。 如果要⽣成不同的随机数,就要让种⼦是变化的。

srand

C语⾔中⼜提供了⼀个函数叫srand,⽤来初始化随机数的⽣成器的,srand的原型如下:

代码语言:javascript代码运行次数:0运行复制
void srand (unsigned int seed);

程序中在调⽤rand函数之前先调⽤srand函数,通过srand函数的参数seed来设置rand函数⽣成随机数的时候的种⼦,只要种⼦在变化,每次⽣成的随机数序列也就变化起来了。

如果说给srand的种⼦是rand生成的随机数,这显然是不行的(类似先有鸡还是先有蛋的哲学问题

发布者:admin,转转请注明出处:http://www.yc00.com/web/1754951050a5220008.html

相关推荐

  • 【C语言篇】猜数字游戏(赋源码)

    猜数字游戏前言在前两篇博客对于分支和循环语句进行了详细的介绍:分支语句详解循环语句详解我们就可以写一写稍微有趣的代码了,比如:写一个猜数字游戏游戏要求:电脑⾃动⽣成1~100的随机数玩家猜数字,猜数字的过程中,根据猜测数据的⼤⼩给出⼤了或⼩

    1月前
    190

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信