A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  看到这个标题大家可能会很疑惑,如何让你的程序更加智能化?这个问题看起来好高大上,但是其实细细想想,也无非就是让电脑在执行这个语句的时候想一想我要不要执行这个语句,而不是你让我执行我就执行.         
  好,那么今天,我就教大家一个方法来让我们的程序稍微的智能那么一点点.

  首先我们要实现的语句就是打印一句printf("哎呀我的妈呀,终于调用我了");这个语句,那么我们如何让程序在执行到这一语句的时候按照一定的概率来判断是否运行这一语句呢?

  好,下面,我们假设当电脑执行到这一句话的时候,有百分之八十的可能不执行这一句代码,有百分之二十的可能执行这一代码.

  好,那么我们想一下该如何实现呢?我们都学过数学,0.8是不是等于4除以5啊,那么假设这一语句为x的话,那么我们是不是需要给这个语句乘以一个系数,也就是0.8x,那么如何得到这样一个0.8呢?哈哈好多同学可能到这里已经知道了,没错,我们可以定义一个数组.

  我们先定义一个数组a[5]

  int a[5];

  然后怎么办呢?
  那我们是不是需要让这个数组里分成两部分,也就是让该数组里的5个元素按照4:1分开啊,也就是说,我们让数组里的4个元素为同一值,让1个元素单独为一个值.

  好,那么我们下面给数组赋值,为了好理解,我用0,1来赋值

  a[5]={0,0,0,0,1};

  现在很明显,当我们取a[0]-a[3]这4个数字的时候都是同一个值
 
  那么如果我们取这个函数中的任一个为真的时候执行我们上面的printf语句,那么我们是不是就实现了百分之八十的几率不执行这个语句,百分之二十执行了呢?

  好,那具体函数应该怎么写呢?
  首先我们定义一个i
  int i=-1;//这里我给i赋值为-1是为了不让它干扰我们的程序
  我们执行这样,我们让i等于一个0-4的随机数,用i来做数组a的下标.
                i=arc4random_uniform(5);
  然后执行
  if(a==1)
printf("哎呀我的妈呀,终于调用我了");
  这样我们就成功实现了我们的需求
  好了大家可以去试一下,我们下次再讲如何让程序按照运行的结果来自己改变概率值.大家应该都学会了如何敲石头剪刀布的游戏,那么大家思考一下如何让电脑根据玩家的出拳的喜好来针对性的改变自己出拳的概率,而不是每次都是随机的出拳呢?这个问题我会放在下个帖子:如何让你的程序更加智能化进阶篇中讲解.希望大家在下面留言告诉我你的思路.
  好,那我们今天就讲到这里,谢谢大家的关注
  made by Answer.


评分

参与人数 1技术分 +1 收起 理由
耀阳圣尊 + 1

查看全部评分

4 个回复

倒序浏览
不好意思最后一个语句少打了一个下标,更正为if(a[i]==1)printf("哎呀我的妈呀,终于调用我了")
回复 使用道具 举报
这是个技术帖子
回复 使用道具 举报

希望大家积极回帖,并且思考一下我留下的问题
回复 使用道具 举报
好好学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马