Scratch

状课网-少儿编程网课专业平台

Scratch 跟我学scratch编程:基础篇—链表的应用二:取随机数

发布时间:2021-11-26 11:27:40 浏览 0

  之前讲过一次链表应用,今天在多加一讲针对链表的应用,让大家对链表的概念掌握的更清楚些。

  ———— / 随机数 / ————

  scratch里面有随机数的命令,就是在一段数字之间取随机值。

跟我学scratch编程:基础篇—链表的应用二:取随机数

  但是我们往往面对的取随机数的时候不是取数字,而是取一些非数字的值,比如说星期几?什么星座?哪种小动物?这些都不是数字,而是一个非数字的组合。那么针对这种情况随机值怎么取?这就要用到链表了。

  ———— / 举例 / ————

  我们用一个猜星期几的例子,大家看一下:

跟我学scratch编程:基础篇—链表的应用二:取随机数

  我们来看一下代码:

跟我学scratch编程:基础篇—链表的应用二:取随机数

  这是小猫的代码首先创建了一个星期的链表,在程序开始的部分要注意:首先要进行初始化,把链表清零,因为链表在程序结束后是不会自动清零的,当你在开始运行程序时,链表里的老数据就会干扰程序运行。

跟我学scratch编程:基础篇—链表的应用二:取随机数

  然后将星期日到星期六全部加入链表。

跟我学scratch编程:基础篇—链表的应用二:取随机数

  这段代码是根据当前时间算出今天是星期几。并开始提问

跟我学scratch编程:基础篇—链表的应用二:取随机数

  这段重复代码是让小狗反复回答,知道猜到了几天是星期几为止。

跟我学scratch编程:基础篇—链表的应用二:取随机数

  上面的代码都不是今天讲的重点,今天讲得重点是小狗的代码,也就是管理链表中随机数的用法。让我们看小狗的代码:

跟我学scratch编程:基础篇—链表的应用二:取随机数

  小狗的代码

  小狗的代码很简单,首先在1~7中间取一个随机数,然后再将链表中对应的第几项中的文字提取出来。就表明猜得是星期几。这就是非整数的一组数据如何取随机数的办法。

  ———— / 取不重复的随机数 / ————

  但是刚才的程序里有明细不合理的地方,就是小狗太笨了,明明错误的答案,下次还会再说一遍,为什么呢?是因为我们取随机数的时候并没有限定不能重复,所以每次取的时候自然有可能跟以前的数字重复了。那怎么做的呢?两种方法:

  第一种:把之前取的数字都记录下来,每次取的新数字先拿来跟之前取过的数字一一比较,如果发现重复,那么放弃掉这次取的数字,然后重新选取。(这种的代码就留给大家自己练习吧)

  第二种:每取出一个数字,就把对应的链表里的这一项删除掉。这样每次取都会是新的值。我们就看一下这种怎么做的。

  CC哥重新编了一下小狗的代码,关键就是加了一条删除语句。同时在取随机数的时候,会从第1项,到当前列表的总项数之前来取随机数。

跟我学scratch编程:基础篇—链表的应用二:取随机数

跟我学scratch编程:基础篇—链表的应用二:取随机数

跟我学scratch编程:基础篇—链表的应用二:取随机数

  大家看到链表中的项目被小狗猜完后自动删掉了。

  当然CC哥处理的比较简单,可能由于程序的需要,你的链表不能被删除,那你可以在取随机数的时候复制一份链表,在新的链表上做删除操作。

  另外,对于大的链表,比如班级里全部人的名字,你可以用txt的文件导入到链表中,也可以导出到txt的文件(鼠标右键点击链表)。注意在文本中每一项之间是回车符。

  ———— / 总结/ ————

  今天的内容比较简单,但是很实用,在游戏编程中也经常用到,以后碰到非数字的数据组取不重复的随机值,都可以用这种算法。

 

 

  文章来源:跟我学Scratch编程

本文链接:https://www.ascratch.com/news/17626.html

上一篇:跟我学scratch编程:数学系列—牛吃草问题 下一篇:返回列表