资讯内容
第9课 随机探秘——数据的导出和分析
第9课 随机探秘——数据的导出和分析
任务导航
色子恐怕是生活中最常见的随机现象了,本课,我们使用Scratch编写一个模拟投掷色子过程的小程序,让小猫说出色子上当前的点数,如图9.1所示。通过多次模拟投掷色子的过程,获取数据,然后借助Excel来统计色子上每个点数出现的数目,研究随机现象的规律,如图9.2所示。
图9.1 小猫说出色子的点数
图9.2 数据汇总的结果(投掷300次)
任务分析
用可以让一个角色说一个1到6之间随机的整数,来模拟投掷色子的过程。可以使用图9.3的代码让小猫说出当前的点数。
图9.3 模拟掷色子的过程
程序的核心是随机数,虽然我们在前面多次使用过随机数,但是我们从来没有系统地研究过随机数这个重要的代码,比如取500个1到6的随机数,每个整数的数目是不是都是50个?
想一想
这是一个将程序作为研究工具的实验,首先要回答以下两个问题。
(1)研究的问题:你研究的问题是什么?对问题的答案你有什么猜想?
(2)使用的工具:你准备如何研究这个问题?要获取多少组数据?如何存储这些数据?你打算如何分析这些数据?
Follow Me
1. 获取数据
获取多组数据常常需要使用链表来存储数据,如图9.4所示。
图9.4 用链表结果来存储随机数 |
按空格300次不难获得300个随机数,那么,怎么知道其中有多少个1呢?
2. 统计色子上每个点数出现的次数
统计色子上每个点数出现的次数可以采用很多种思路,如可以编一个程序来记录1到6个数据各出现多少次;或者使用数据处理软件,辅助完成统计的工作。
在科学研究中,虽然程序理论上可以解决所有的数据处理的问题,但是有时候限于现有的编程水平,或者追求更快的速度,常常需要结合应用软件来完成数据处理工作。接下来介绍用Excel的排序功能来统计1到6出现的次数。
第1步:在链表上右击,选择“输出”,如图9.5所示,在弹出的对话框中选择合适的存储位置,将链表数据输出为txt文件。
图9.5 输出链表数据
第2步:将txt文件中的数据复制粘贴在Excel中,如图9.6所示。
图9.6 数据存储从链表转换到txt文件再到Excel中 |
第3步:将数据从小到大排列,如图9.7所示。
注意:在排列之前,请复制所有数据在工作表中,Sheet1用于保留原始数据。
图9.7 将数据升序排列 |
第4步:数出每个数字的个数
方法有很多,比如看左边的编号,或者选中所有的数字2的单元格,然后在Excel右下角会显示出当前单元格的数目,或者把所有编号为2的单元格剪切、粘贴在旁边的那一列。最终将数据汇总到Sheet3中,如图9.8所示。
图9.8 数据汇总的结果
实验的结果和你之前的猜想一致么?和你周围的同学们比较一下,实验的结果相同么?
DIY
可以通过改进代码,使用重复执行语句,增大数据量,让计算机自动生成600个随机数,代码如图9.9所示。
图9.9 用重复执行语句生成600个随机数 |
想一想
1.你的猜想正确么?
2.是不是数据量越大,每个数字出现的数目占总数目的百分比就越接近?
3.为了获得更多的数据,能不能将其他同学的数据和自己的数据合并呢?
知识着陆
2. 设计:从获取、分析数据的角度验证猜想
3. 编程习惯:多种软件共同使用提高效率
创作天地
1.有些同学提出绘制6个不同点数的筛子造型,用图9.10的代码来实现掷色子的效果,你也可以试一试。
图9.10 用点数来模拟掷色子的过程 |
2.一位同学试图改进图9.10的代码,却出现了图9.11的效果,你能帮他修改正确么?
图9.11 造型点数和说的点数不一致 |
3.使用插入柱形图按钮,可以将选中的数据生成柱形图,如图9.12所示,你也可以试一试。
图9.12用柱形图来分析数据 |
视野拓展
编程的英文programming有“按照顺序作一件事”的意思,意思是说程序中任何代码都会经历一段时间,就连循环也不例外,你可以试着做一个小实验,按照图9.13所示的代码记录100组循环时间求出每次循环所用的时间
图9.13 循环100次所需要的时间研究
链表直接导出成Excel文件,更改扩展名txt为xls,实验发现一个空循环100次所需要的时间大约是2.5秒,每次循环大约需要0.025秒,你可以研究一下这100组数据的最大值和最小值是多少,并思考影响循环时间的影响因素。
懂得了这个道理,就不难理解图9.14所示的“秒表”程序为什么不能准确的计时了,事实上所有程序语言都有一个相对固定的循环时间,这是深入研究任何一门语言都要考虑的问题。
图9.14秒表程序